xcode - 如何禁止 Xcode 生成以 cmake 中的构建配置命名的文件夹?

标签 xcode cmake

我有一个非常适合我在 Windows 和 Linux 上的项目的 cmake 配置。我们现在正在修改 MacOS,我们正处于 Xcode 将库从我们定义的目录中构建出来的地方。例如,它不是放在 ~/bin 中,而是放在 ~/bin/Debug 中。尽我所能告诉 Xcode 自己将这个文件夹添加到路径中,我不想要那样。

如何在我的 cmake 配置中禁用 Xcode 执行此操作?

最佳答案

您需要指定目标属性 ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> , LIBRARY_OUTPUT_DIRECTORY_<CONFIG> ,和/或 RUNTIME_OUTPUT_DIRECTORY_<CONFIG> 对于每种配置类型和您想要影响的每个目标。

要影响所有目标,您可以使用 CMAKE_ 设置命名为这些的变量。前置。在设置这些之后添加的任何相关目标都将受到影响。

因此,例如,您可以执行以下操作:

add_library(MyLib ${Sources})
set_target_properties(MyLib PROPERTIES
                      ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}
                      ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR})

或者你可以这样做:

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR})
add_library(MyLib ${Sources})

话虽如此,我通常发现最好让 XCode 和 MSVC 等多配置生成器只添加特定于配置的目​​录。除非您还打算更改 exe 和 libs 的默认名称,否则这些多配置 IDE 将用另一个配置的输出覆盖一个配置的输出。因此,很难判断您是在查看 Debug 还是 Release exe。

对于单配置生成器,我认为每个配置都有单独的构建树以保持区别是很常见的。

基本上,我不会与发电机作斗争。 CMake 自动化了如此多的构建过程,我从来没有发现生成器之间的这种细微差别是一个问题。您很少需要考虑输出路径是否包含配置目录。

关于xcode - 如何禁止 Xcode 生成以 cmake 中的构建配置命名的文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18393813/

相关文章:

Swift GeoFire 错误链接器错误 _OBJC_CLASS_$_GeoFire

xcode - Swift:如何为我的游戏添加地板?

iOS模拟器无法上网

c++ - 在 CMakeLists.txt 中链接 GSL

visual-studio - 用于集成 Microsoft 单元测试框架的 CMake (VS2017)

c++ - 使用 cmake ‘undefined reference to’

iphone - 如何读取 Xcode 控制台输出?

SwiftUI: ListView 与 ForEach View

c++ - 我应该链接哪些库来构建 opencv 3.2

qt - 使用 QWT 构建时出错