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

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

这是我的目录结构:

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

我的Alpha的CMakeLists.txt文件如下所示:

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

现在,在Beta的原始代码中,CMakeLists.txt文件包含大量信息,例如检查操作系统,查找包以及通常定义各种cmake变量.我需要在CMakeLists.txt文件中使用这些变量用于Alpha,以便正确编译Beta.cpp.

所以,我的问题是:是否可以在Beta / CmakeLists.txt中保留所有这些信息,而无需在Alpha的CMakeLists.txt文件中全部写出来?然后我如何告诉Alpha的CMakeLists.txt文件读取Beta的CMakeLists.txt文件以获取这些变量?我想这样做是为了保持一切整洁,并保持模块化.谢谢!

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

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

所以你的目录结构将是

/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

相关文章
相关标签/搜索