看来您最近才切换到 CMake,因为当我第一次开始使用 CMake 时,这些问题也突然出现在我的脑海中。让我们按照您发布它们的顺序来解决它们:
我使用 CMake GUI 生成 Visual Studio 项目,并要求在 Build 文件夹中构建二进制文件(CMAke 缓存和其他内容),该文件夹位于 CMakeLists.txt 所在的同一文件夹中。
不。始终使用 CMake进行源外构建。我知道,当你第一次这样做时感觉很奇怪,但相信我:一旦你习惯了,你就再也不想回去了。
当代码和构建文件正确分离时,使用源代码控制变得更加方便,这使得它成为 CMake 的杀手级功能。
有没有办法指定必须在哪里创建 Visual Studio 解决方案文件?
你真的不应该在意。
我明白为什么您确实觉得您需要完全控制解决方案和项目文件的创建方式,但您确实不需要。只需将解决方案的目标指定为源外构建的来源,然后忘记生成的所有其他文件。你不需要担心,你也不想担心——这正是 CMake 应该为你处理的事情。
问问自己:如果您可以手动选择每个项目文件的位置,您将获得什么?没什么,因为很有可能,你无论如何都不会碰它们。CMake 现在是你唯一的主人......
CMake 创建了我在 CMakeLists.txt 中定义的项目,还创建了另外两个项目:ALL_BUILD 和 ZERO_CHECK。它们的用途是什么?通过使用命令 set_property(GLOBAL PROPERTY USE_FOLDERS On),我能够避免创建 ZERO_CHECK。有没有办法避免创建 ALL_BUILD?
再说一次,你真的不应该关心。CMake 定义了几个虚拟项目,它们对于您不想担心的某些内部巫术非常有用。一开始它们看起来很奇怪,但你会比你想象的更快地适应它们的视线。只是不要试图把它们扔掉,因为它不能正常工作。如果他们的视线真的让您非常恼火,请考虑将它们移动到解决方案内的文件夹中,这样您就不必一直看着它们。
底线:CMake 在几个方面与手工制作的 VS 解决方案不同。这需要一些时间来适应,但最终是一种比人们可能担心的痛苦少得多的经历。