参考链接: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