使用我们的 CMake 构建系统,我构建了一些库和一些可执行文件。构建产品都输出到特定文件夹。
现在,问题是我有一个 VS2010 和一个 VS2008 工具链,但我只需要用于 VS2008 库的 VS2008 工具链。输出的可执行文件是两个工具链的 win32 目标,所以我只需要通过 VS2010 工具链构建可执行文件一次,而 VS2008 工具链应该跳过可执行文件并只构建所需的库(这样可以节省构建时间)。
CMake 基础脚本和整体设置也可能在未来交付给客户,因此如果在 CMake 中有一种方法可以禁用某些目标,例如以通用方式禁用所有可执行文件,那就太好了。否则,我必须IF( BUILD_EXECUTABLES ) ... ENDIF()
围绕我的可执行文件设置编写许多大型结构CMakeLists.txt
,而当我忘记它们时,CMake 不会给我错误。
构建是通过一些批处理文件触发的。理想情况下,我想cmake
通过-D
选项(例如-D BUILD_EXECUTABLES=false
)传递一个变量
我试图包装ADD_EXECUTABLE
宏,但这不起作用,因为我有类似的调用
TARGET_LINK_LIBRARIES
然后抱怨不存在的目标。
我还可以将输出目录设置为一些可以在之后删除的垃圾文件夹,但是(如前所述)不会节省构建时间。(我们有一个相当大的项目。)
关于如何以干净和通用的方式实现这一目标的任何想法?