我在 linux 中使用 cmake 已经有一段时间了,但出于一些原因,我需要转到 Visual Studio 中工作......
我生成了 cmake 项目,我可以在 Visual Studio 中加载解决方案,但是当我尝试添加文件时,它被添加到构建文件的位置,而不是添加到源目录中。有没有办法解决这个问题,还是必须通过资源管理器添加它们,然后重新生成 cmake 构建文件,然后重新打开解决方案?这似乎有点笨拙,我希望有一个更简单的方法。
我在 linux 中使用 cmake 已经有一段时间了,但出于一些原因,我需要转到 Visual Studio 中工作......
我生成了 cmake 项目,我可以在 Visual Studio 中加载解决方案,但是当我尝试添加文件时,它被添加到构建文件的位置,而不是添加到源目录中。有没有办法解决这个问题,还是必须通过资源管理器添加它们,然后重新生成 cmake 构建文件,然后重新打开解决方案?这似乎有点笨拙,我希望有一个更简单的方法。
是的,您应该通过 CMakeLists.txt 文件而不是通过 VS 添加文件。这里有几个选择。
推荐的方法是在 CMakeLists 文件中明确列出所有源文件。如果要添加新文件,则必须将其添加到 CMakeLists.txt。这种方法的好处是修改CMakeLists文件后,整个构建是“过时的”,所以仅仅尝试在VS中构建任何目标都会导致CMake重新运行并将文件添加到适当的目标中。
另一种选择是使用 CMake 的file(GLOB ...)
命令。这将在给定的路径中搜索来源,并可用于自动生成您的来源列表。好处是它比在 CMakeLists 文件中手动列出所有文件更简单。但是,缺点是如果将新文件添加到源目录,则必须手动重新运行 CMake,因为 CMake 不会知道源目录已过期。我不得不说,我通常不认为这是一个问题——如果你刚刚添加了一个文件并且它没有出现在你的 VS 资源管理器中,这很明显,当然到构建时它会更加明显,因为构建失败(或者你不是在使用该文件)。
请注意,对于任一选项,如果您重新运行 CMake,则无需关闭 VS。
要通过 Visual Studio 添加新文件,您可以选择“添加 -> 新项目”选项。在结果窗口中,应该有一个“位置”文本输入框。这具有默认指定的构建目录,但可以轻松地将路径更改为源代码树中的某个位置。