gpt4 book ai didi

c++ - 从另一个 CMakeLists.txt 将变量读入 cmake

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:04 24 4
gpt4 key购买 nike

使用 UbuntuC++cmake,我想创建一个基于代码的程序 Alpha对于另一个程序,Beta。我已经有了 Beta 的源代码,我需要为使用现有代码的 Alpha 编写代码。我试图保持一切整洁,所以我有一个单独的目录用于 AlphaBeta 源文件,Alpha.cppBeta .cpp.

这是我的目录结构:

/CMakeLists.txt
/Alpha.cpp (the main function)
/Beta
/CMakeLists.txt
/Beta.cpp

AlphaCMakeLists.txt 文件如下所示:

cmake_minimum_required(VERSION 2.8)
project(Alpha)
add_executable(Alpha Alpha.cpp Beta/Beta.cpp)

现在,在 Beta 的原始代码中,CMakeLists.txt 文件有很多信息,例如检查操作系统、查找包以及一般定义各种变量。我需要在 CMakeLists.txt 文件中为 Alpha 使用这些变量,以便正确编译 Beta.cpp

所以,我的问题是:是否可以在 Beta/CmakeLists.txt 中保留所有这些信息,而不必在 AlphaCMakeLists.txt 文件?然后我如何告诉 AlphaCMakeLists.txt 文件读取 BetaCMakeLists.txt 文件到得到这些变量?我想这样做是为了保持一切整洁,并保持模块化。谢谢!

最佳答案

CMake 有一个include 结构,它允许您引入其他文件/模块。 http://www.cmake.org/cmake/help/v3.0/command/include.html

因此,您可以将所需的任何内容从 Beta/CMakeLists.txt 分离到另一个名为 Beta.cmake 的文件/模块中,并使用 include (Beta/Beta.cmake) 将其包含在 Alpha 的 CMakeLists 中。

所以你的目录结构是

/CMakeLists.txt
/Alpha.cpp (the main function)
/Beta
/CMakeLists.txt
/Beta.cmake (variables required in Alpha's CMake)
/Beta.cpp

还有 Alpha 的 CMakeList.txt

cmake_minimum_required(VERSION 2.8)
project(Alpha)
include(Beta/Beta.cmake) (get variables needed from Beta)
add_executable(Alpha Alpha.cpp Beta/Beta.cpp)

另见 How to include an additional CMakeLists.txt

关于c++ - 从另一个 CMakeLists.txt 将变量读入 cmake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27818933/

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