cmake嵌套使用
在一个大项目中,随着代码量的增加,我们使用一个CMakeLists.txt文件就不好管理,不利于维护,所有我们一般为每一个模块或文件夹使用一个CMakeLists.txt文件管理,减少一个CMakeLists.txt的压力,便于维护和管理
项目结构:
cmake文件
# MultCmake/CMakeLists.txt
cmake_minimum_required(VERSION 3.28)
project(MultCmake)
set(CMAKE_CXX_STANDARD 17)
include_directories(include)
add_subdirectory(src)
aux_source_directory(src SRC_ADR)
add_executable(MultCmake ${SRC_ADR})
target_link_libraries(MultCmake MultCmake_app MultCmake_library)
# src/CMakeLists.txt
add_subdirectory(app)
add_subdirectory(library)
add_library(MultCmake_src STATIC main.cpp)
set(MultCmake_LIBS
MultCmake_app
MultCmake_library)
target_link_libraries(MultCmake_src ${MultCmake_LIBS})
# src/CMakeLists.txt
add_library(MultCmake_app STATIC app.cpp
app.h)
target_include_directories(MultCmake_app PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
# library/CMakeLists.txt
add_library(MultCmake_library STATIC library.cpp
library.h)
target_include_directories(MultCmake_app PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
// main.cpp
#include <iostream>
#include "MultCmake.h"
int main() {
printapp();
printlibray();
std::cout << "Hello, World!" << std::endl;
return 0;
}
输出结果:
hello,this is app.cpp
hello,this is library.cpp
Hello, World!