Cmake 具有多个组件的基本项目设置
建立一个包含多个独立组件的项目的最佳方式是什么 我的项目没有顶级CMakeLists文件,它由多个组件组成。其中一些可以独立构建,而另一些则依赖于其他组件。 例如,组件A和B可以自己构建和使用(可能由几个单独的目标组成),而组件C需要A和B来构建 项目布局:Cmake 具有多个组件的基本项目设置,cmake,Cmake,建立一个包含多个独立组件的项目的最佳方式是什么 我的项目没有顶级CMakeLists文件,它由多个组件组成。其中一些可以独立构建,而另一些则依赖于其他组件。 例如,组件A和B可以自己构建和使用(可能由几个单独的目标组成),而组件C需要A和B来构建 项目布局: ├───component_A │ CMakeLists.txt │ main.cpp │ ├───component_B │ CMakeLists.txt
├───component_A
│ CMakeLists.txt
│ main.cpp
│
├───component_B
│ CMakeLists.txt
│ main.cpp
│
└───component_C
CMakeLists.txt
main.cpp
我可以看到3种可能性,但没有一种是有效的或可行的:
一个直截了当的解决方案是使用一些CMake创建一个顶级CMake,让您能够控制整个项目中包含的内容。这些选项将填充并可以在CMake GUI中更改,但是如果从命令行运行
CMake
,也可以控制这些选项。以下是针对您的情况的简单顶级CMake文件:
cmake_minimum_required(VERSION 3.11)
project(TopLevelProject)
# Define options to easily turn components ON or OFF.
option(ENABLE_COMPONENT_A "Option to include component A" ON)
option(ENABLE_COMPONENT_B "Option to include component B" OFF)
option(ENABLE_COMPONENT_C "Option to include component C" OFF)
# Determine which components are included and built by default in ALL_BUILD.
if(ENABLE_COMPONENT_C)
# Need all three components in this case.
add_subdirectory(component_A)
add_subdirectory(component_B)
add_subdirectory(component_C)
else()
if(ENABLE_COMPONENT_A)
add_subdirectory(component_A)
endif()
if(ENABLE_COMPONENT_B)
add_subdirectory(component_B)
endif()
endif()
在本例中,只有选项A在上,因此生成的buildsystem中只包含组件A。即使包含所有组件,您仍然可以在生成buildsystem后选择单独构建哪些项目(或目标)。“我可以看到3种可能性,但它们似乎都不高效或可行”-实际上,它们中的任何一种都可以工作。试试看。