如何用Cmake管理多个文件夹
文件目录:
main.cpp
#include "test01/test01.h" #include "test02/test02.h" int main() { TEST01 test01; test01.Print(); TEST02 test02; test02.Print(); return 0; }
CMakeLists.txt
cmake_minimum_required(VERSION 2.8) add_subdirectory(test01) add_subdirectory(test02) add_executable(Main main.cpp) target_link_libraries(Main Test01 Test02)
其实关键的就是add_subdirectory()这句话,要包含子目录,且这个目录要有CMakeLists.txt.。根据子目录的CMakeLists.txt来编译生产依赖的.a或者.so ,最后在编译main.cpp的时候生成可执行文件且依赖子目录的.a或者.so。这样可实现一个文件实现一个功能的模块化管理文件。
test02
//*********************************CMakeLists.txt cmake_minimum_required(VERSION 2.8) add_library(Test02 STATIC test02.cpp ) //*********************************CMakeLists.txt //*********************************test02.cpp #include "test02.h" #include <iostream> void TEST02::Print() { std::cout << "Test02::Print" << std::endl; } //*********************************test02.cpp //*********************************test02.h class TEST02 { public: void Print(); }; //*******************************test02.h
test01
//*********************CMake cmake_minimum_required(VERSION 2.8) add_library(Test01 STATIC test01.cpp ) //********************CMake //**********************test01.cpp #include "test01.h" #include <iostream> void TEST01::Print() { std::cout << "Test01::Print" << std::endl; } //***************************test01.cpp //***************************test01.h class TEST01 { public: void Print(); }; //**************************test01.h