【发布时间】:2015-09-08 02:37:43
【问题描述】:
我有一个 CMake 项目。它是一个由开发人员团队开发的跨平台项目。 Visual Studio 和其他 make 文件在库发布和外部开发人员的版本控制中。
每次添加文件时,我们都需要为所有平台重新编译所有项目文件。如何强制 CMake 一次为所有系统生成新的项目文件(如果可能,从 CMakeLists.txt 内部,而不是作为命令行参数)?
【问题讨论】:
-
Visual Studio 的每个版本都会生成不同版本的项目文件。 VS6 是 dsp,VS7 到 VS9 vcproj - 完全不同,VS10 到 VS13 vcxproj - 完全不同。如果您尝试跟上不同版本的 Visual Studio,您将永远在那里。另外还要考虑是32位/64位,unicode/mbcs。
-
我也不推荐它,但既然你要求强制 CMake 这样做:假设使用的生成器和匹配的二进制输出目录是知道你可以做例如
if (FORCE_CMAKE)unset(FORCE_CMAKE CACHE)else()if (NOT "${CMAKE_GENERATOR}" STREQUAL "Visual Studio 9 2008")execute_process(COMMAND ${CMAKE_COMMAND} -DFORCE_CMAKE=1 -H"${CMAKE_SOURCE_DIR}" -B"MyBuildVS2008Dir" -G"Visual Studio 9 2008")endif()...endif()。只需完成列表,每次触发重新配置时,它也会检查其他配置。
标签: c++ c visual-studio cmake projects-and-solutions