使用CMAKE如何停止" Debug"和"发布"子目录

时间:2017-11-08 09:26:16

标签: c++ visual-studio cmake

我已经用:

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

tab1 = new UINavigationController(new HomeViewController()); tab1.TabBarItem.Image = UIImage.FromFile("Icons/Home.png");

不幸的是,Visual Studio添加了set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)Debug个目录。

我不想要这些。

documentation for CMAKE说:

  

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

但我不确定这意味着什么。

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

1 个答案:

答案 0 :(得分:4)

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

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY $<1:${CMAKE_SOURCE_DIR}/bin>)

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

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

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

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