cmake 生成工程的时候,很多教程都告诉你 CMAKE_BUILD_TYPE 是构建类型。原本想用这个来判断是否Debug 模式,并写if来修改文件名。但是,这个变量其实仅在生成 Make 文件这种非 multi-config下才起作用,在生成 VC 工程文件这样的 multi-config 里构建器里,仅会有一个叫 CMAKE_CONFIGURATION_TYPES 的变量。
不要企图在 multi-confg 构建器里通过 if 来区分 Debug Release 之类的模式,因为 cmake 脚本是执行一遍同时产生所有构建类型的,所以如果想为不同的构建类型指定不同文件名,那么应该使用下面的代码:
SET_TARGET_PROPERTIES(<project_name> PROPERTIES <config>_OUTPUT_NAME <name>)
<config> 就是 Debug, Release, MinSizeRel, RelWithDebInfo 这样的构建类型。