无论如何从 CMakeLists.txt 文件更改 CMake 构建目录?我正在查看 CMAKE_BINARY_DIR 变量,但它似乎无法更改。原因是我的项目可以针对不同平台编译,我希望用户定义一个构建目录,CMake会根据平台决定构建位置:if (x86): CMAKE_BINARY_DIR = CMAKE_BINARY_DIR/x86 if (x64 ): CMAKE_BINARY_DIR = CMAKE_BINARY_DIR/x64
简而言之,让用户无需为他想要为其编译项目的每个平台配置构建目录。
谢谢,安纳
不要这样做。
在 CMake 中,由用户指定要使用哪个二进制目录进行构建。这是在 CMake 的初始配置运行时完成的。例如,命令行工具将使用当前工作目录作为根构建目录。更改此目录需要您从头开始重新执行配置步骤。尝试以任何其他方式更改二进制目录是不可取的。
您可以做的是更改各个构建工件的输出目录。例如,您可以将所有库放入lib/x8632 位构建和lib/x6464 位构建(通过LIBRARY_OUTPUT_DIRECTORYtarget 属性)。但这并不能解决你的问题。
更改架构仍然需要您从头开始重新运行 CMake 配置,您应该始终在单独的目录中执行此操作。您应该避免重新配置到脏的二进制目录,因为这可能会以微妙的方式破坏,并且从长远来看只会带来麻烦。
所以你的目录结构看起来像这样:
<build_32>
+-lib
+-x86
<build_64>
+-lib
+-x64
Run Code Online (Sandbox Code Playgroud)
其中<build_32>和<build_64>是用户选择的文件夹。如果您想要像这样的单个目录树:
<prefix>
+-lib
+-x86
+-x64
Run Code Online (Sandbox Code Playgroud)
获得此功能的最简洁方法是通过安装。从上面的两个单独的构建目录中,用户可以对相同的安装前缀执行安装,以检索如上所示的目录树。虽然您仍然必须注意不要在安装过程中意外覆盖其他配置中的重要构建工件,但管理它通常比确保共享构建目录的情况要简单得多。
| 归档时间: |
|
| 查看次数: |
856 次 |
| 最近记录: |