使用Cmake和Qt Creator

25

我想要同时使用Qt creatorCmake(请不要问我为什么,将其视为已知条件)。

我已经成功地设置了Qt creator使用Cmake。有关如何操作,请参阅这些文档:此处此处以及此处

我已经成功创建了一个“Hello World”项目,但我无法在项目中创建文件,只能将现有文件添加到项目树中,并在此之后将其添加到Cmake列表中。Qt creator的标准操作“添加新文件...”没有起作用,我不知道为什么。

有没有人同时使用Qt creator和Cmake?这种组合是否实际可行?

注意:我正在使用Qt creator v2.4.1。

5个回答

14

你可以在 CMakeLists.txt 中使用 glob 表达式添加文件,像这样:

file(GLOB SRC . *.cpp)
add_executable (your_exe_name ${SRC})

CMake 下次运行时会选择你的新 cpp 文件,而 QtCreator 将在项目浏览器中显示它们。

更新

这个解决方案可能很有用,但是如评论中所述 - 这不是一个好习惯。每当有人添加新的源文件并提交更改时,您需要重新运行 CMake 以构建所有源文件。通常情况下,如果我的构建在从存储库中获取最近更改后出现故障,我只需触摸其中一个 CMakeLists.txt 文件。之后,make 将自动运行 cmake,我无需手动运行它。尽管如此,我认为在 CMakeLists.txt 中明确列出源代码列表是一件好事,毕竟它们被称为 CMake Lists


4
请记住,对于CMake来说,使用通配符收集源文件被认为是一种不良实践。 - Roman Kruglov
3
我使用 file(GLOB_RECURSE SRC *.cpp)。 - themean
1
CMake在makefile中能够自我启动,非常智能化。我从来没有必要手动运行CMake,而且我经常使用通配符... - rubenvb
你使用的CMake版本是什么? - Evgeny Lazin

10
当你使用"新建文件或项目"对话框在QtCreator中添加新文件时,它只会在磁盘上创建文件,不会自动将文件添加到CMakeLists.txt。你需要手动编辑CMakeLists.txt文件来完成此操作。
下次构建项目时,CMake将重新运行,QtCreator将捕捉到新的文件并在项目浏览器中显示出来。

2
也许我没有表达清楚,我正在寻找在目录中创建文件的方法。右键单击文件夹->添加项目等方式对我不起作用,当我使用cmake时。 - themean
@themean - 我理解你的问题是:在QtCreator中是否可以向基于CMake的项目添加文件?如果可以,如何操作?如果我误解了,请编辑你的问题以澄清你想要问什么。 - alanxz
1
我稍微澄清了一下我的回答,这有帮助吗? - alanxz
我认为你不会找到一个自动将文件添加到通用CMakeLists.txt的IDE。CMakeLists.txt文件有很多不同的格式,为IDE编写插件来完成这个任务会非常困难。在我使用QtCreator + CMake的经验中,你丢失的唯一重要功能是IDE无法自动更新CMakeList.txt文件,但鉴于它提供的功能(代码导航、代码完成),对我而言这并不是什么大问题。但这只是我的观点。 - alanxz
也许你是对的,也许不是。在使用Qt Creator之前,我使用KDevelop。这个IDE与CMake完美地配合工作,但它只适用于Linux(也许)。KDevelop - themean
显示剩余2条评论

5

我解决了这个问题,我按标准方式添加了新文件(CTRL + N),然后在CMakeLists中添加了所需的文件。之后,在项目树视图中右键单击项目并选择选项“运行CMake”。之后,文件显示在项目列表树中。仅构建是不够的。


3

我在这里进行了测试,发现因为你所问的那些选项确实被禁用了,所以出现了相同的行为。

使用文件->“新建文件或项目...”或CTRL+N添加新文件,然后将其添加到CMakeLists.txt中。


2
我为QtCreator的更新版本(4.x,我不确定确切的版本,但至少从4.7开始)添加了一个更新后的答案。在“工具>选项...”菜单中选择“构建和运行”部分,然后选择“CMake”选项卡。您将看到“添加文件”设置,并且可以将其设置为“复制文件路径”:

enter image description here

这样,当您想要向项目添加新文件时,在“项目”视图中,右键单击所需的CMake可执行文件/库的名称,然后选择“添加新建...”,通过“添加对话框”,并在验证对话框时,QtCreator将在“编辑器”视图中打开“CMakeLists.txt”。最后,将剪贴板的内容粘贴到相应源文件列表的末尾,并保存“CMakeLists.txt”。 CMake项目将被解析,并且您的新文件将显示在“项目”视图中。


1
我在QT Creator 4.5.2中没有看到这个选项。 - stackprotector
我不确定这个选项是什么时候添加的。我已经使用了几年了。当我写这篇答案时,最新版本的QT Creator是4.7,我会相应地编辑我的答案。 - aTom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接