使用 CMAKE 如何停止“调试”和“发布”子目录

Sta*_*tec 7 c++ cmake visual-studio

我已经指定了我的二进制输出目录:

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)

不幸的是,Visual Studio的增加DebugRelease目录。

我不要这些。

CMAKE文档说:

除非使用生成器表达式,否则多配置生成器(VS、Xcode)会将每个配置的子目录附加到指定目录。

但我不确定这到底是什么意思。

如何让 Visual Studio添加这些目录?

Rei*_*ica 8

直接回答您的问题:使用生成器表达式,如文档所示。下面是一个例子:

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY $<1:${CMAKE_SOURCE_DIR}/bin>)
Run Code Online (Sandbox Code Playgroud)

$<1:xxx>是一个扩展为 的基因xxx,因此这意味着最终值将是您想要的值。

但是,请注意,这意味着在构建时,来自当前构建配置的二进制文件将覆盖来自先前构建的二进制文件,即使这是不同的配置。你确定你想要那个?


作为旁注,您指定的路径是相对于目录的。这听起来也很不寻常,很容易导致问题。例如,如果您从同一个源生成多个构建系统(到不同的二进制目录),.exe它们中的所有文件都将存储在同一位置,最后构建的文件会覆盖之前的所有文件。这听起来像是一大堆蠕虫和未来的维护噩梦。

虽然我不知道您设置的详细信息,但我敦促您重新考虑在源代码树中存储构建工件。