3

我一直在使用cmake在Linux有一段时间了,但我需要移动到Visual Studio中的几个原因的工作...文件添加到CMake的项目在Visual Studio 2010

我有生成cmake项目,并且我可以在Visual Studio中加载解决方案,但是当我尝试添加文件时,它将被添加到构建文件的位置,而不是添加到源目录中。有没有办法解决这个问题,还是必须通过Explorer添加它们,然后重新生成cmake构建文件,然后重新打开解决方案?这似乎有点笨拙,我希望有一个更简单的方法。

回答

3

要通过Visual Studio添加新文件,您可以选择“添加 - >新建项目”选项。在结果窗口中,应该有一个“位置”文本输入框。这具有默认指定的构建目录,但路径可以很容易地更改为源树中的某处。

9

是的,你应该通过CMakeLists.txt文件而不是通过VS添加文件。这里有几个选择。

推荐的方法是在CMakeLists文件中明确列出所有源文件。如果你想添加一个新文件,它必须被添加到CMakeLists.txt中。这种方法的优点是,在修改CMakeLists文件后,整个构建“过时”,因此只是试图在VS中构建任何目标将导致CMake重新运行并将文件添加到适当的目标。

另一种选择是利用CMake的file(GLOB ...)命令。这将搜索给定路径的来源,并可用于自动生成您的源列表。好处在于,它比手动列出CMakeLists文件中的所有文件都要枯燥乏味。然而,缺点是如果将新文件添加到源目录中,CMake将不得不手动重新运行,因为CMake不知道源目录是过时的。我不得不说,我一般不会觉得这是一个问题 - 如果你刚刚添加了一个文件,并且它没有出现在你的VS资源管理器中,这很明显,而且通过构建时间,它更加明显,因为构建失败(或者你不是使用该文件)。

请注意,对于任一选项,如果您重新运行CMake,则不需要关闭VS.

+0

谢谢你的回答,但是,我遇到的问题不是关于如何让CMake识别新文件,我已经用你的建议覆盖了一个文件(GLOB ...) 。相反,我正在尝试将一个全新的源文件放入项目中(理想情况下是在VS资源管理器中)。目前,我似乎必须通过Windows Explore来完成此操作,然后重新运行CMake以使文件在Visual Studio中显示。或者,如果我尝试通过VS资源管理器添加一个新文件,该文件将进入构建目录结构,而不是源文件。 (不需要) – 2013-03-24 17:19:54

+1

当你通过VS添加一个新文件时,你不能只选择正确的目录吗? “添加新项目”窗口有一个“位置”字段,默认情况下选择构建目录,但可以很容易地将其更改为源树中的某处。 – Fraser 2013-03-24 21:19:58

+0

这就是我一直在寻找的。我早些时候尝试过,但我没有仔细观察,看到它在构建树中...... doh! (如果你想把它作为新的答案,我会接受它) – 2013-03-25 01:49:57

相关问题