如何使用可执行文件的不同目标名称构建 CMake 调试版本?

How to build CMake Debug version using different target name for executables?

我正在使用 cmake -DCMAKE_BUILD_TYPE=Debug ..

构建

我正在使用 set(CMAKE_DEBUG_POSTFIX d) 在文件名末尾添加 d

这适用于静态库,我希望它也适用于可执行文件。但是,至少在我的例子中,它正在使用 *d.a 和不带 d 后缀的可执行文件编译所有静态库。

我是不是漏掉了什么?

你没有遗漏任何东西。正如文档所说(强调我的):

When a non-executable target is created its <CONFIG>_POSTFIX target property is initialized with the value of this variable if it is set.

参见:https://cmake.org/cmake/help/latest/variable/CMAKE_CONFIG_POSTFIX.html

尽管听起来,您可以使用 set_target_properties:

在可执行目标上手动设置 属性
set_target_properties(
  target1 ... targetN
  PROPERTIES
  DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}"
)

但是请注意,默认情况下它不适用于可执行文件,因为这很少是您想要的。对于库,同时打包和部署调试和发布配置是相当普遍的。在 Windows 上,对于开发来说,这是一个要求。另一方面,很少需要部署调试应用程序,因此很少需要应用后缀。