gpt4 book ai didi

cmake - 运行后更改 CMake 构建目录,在 CMakeLists.txt 中

转载 作者:行者123 更新时间:2023-12-02 04:32:22 25 4
gpt4 key购买 nike

无论如何从 CMakeLists.txt 文件更改 CMake 构建目录?
我正在查看 CMAKE_BINARY_DIR 变量,但它似乎无法更改。
原因是我的项目可以针对不同平台编译,我希望用户定义一个构建目录,CMake会根据平台决定构建位置:
如果(x86):CMAKE_BINARY_DIR = CMAKE_BINARY_DIR/x86
如果(x64):CMAKE_BINARY_DIR = CMAKE_BINARY_DIR/x64

简而言之,让用户无需为他想要为其编译项目的每个平台配置构建目录。

谢谢,
安尔

最佳答案

不要这样做。

在 CMake 中,由用户指定他们想要用于构建的二进制目录。这是在 CMake 的初始配置运行时完成的。例如,命令行工具将使用当前工作目录作为根构建目录。更改此目录需要您从头开始重新执行配置步骤。尝试以任何其他方式更改二进制目录是不可取的。

您可以做的是更改单个构建工件的输出目录。例如,您可以将所有库放置在 lib/x86 中。对于 32 位版本和在 lib/x64对于 64 位构建(通过 LIBRARY_OUTPUT_DIRECTORY 目标属性)。但这并不能解决您的问题。

更改架构仍然需要您从头开始重新运行 CMake 配置,您应该始终在单独的目录中执行此操作。您应该避免重新配置到一个肮脏的二进制目录,因为这可能会以微妙的方式破坏,并且从长远来看只会带来麻烦。

所以你的目录结构看起来像这样:

<build_32>
+-lib
+-x86
<build_64>
+-lib
+-x64

哪里 <build_32><build_64>是用户选择的文件夹。如果你想要一个像这样的单个目录树:
<prefix>
+-lib
+-x86
+-x64

获得它的最干净的方法是通过安装。从上面的两个单独的构建目录中,用户可以对相同的安装前缀执行安装,以检索如上所示的目录树。虽然您仍然必须注意不要在安装过程中意外覆盖来自其他配置的重要构建工件,但管理它通常比确保共享构建目录相同要简单得多。

关于cmake - 运行后更改 CMake 构建目录,在 CMakeLists.txt 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47494785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com