最近接触一个项目,只有一个源码目录,目录里面有好几百的源码文件。看到第一眼就有种想收拾收拾的感觉,把功能相似,业务相近的合到一个目录中去。让代码目录结构更清晰一些。
但我看是动手改的时候,复制源文件到新建目录之后,include和被include头文件的地方都要修改,非常麻烦。
百度查到的一些资料,上面写的虽然是c/c++,但实际上还是c语言,对类文件的cpp并不适用。
下面是我乱搞出的一个cmake,其中func下是c风格的cpp文件,Calc下是一个Calc的cpp类。
目录结构如下:
CMakeLists.txt
│
├─build
├─calc
│ Calc.cpp
│ Calc.h
│ CMakeLists.txt
│
├─func
│ CMakeLists.txt
│ func1.cpp
│ func1.h
│ func2.cpp
│ func2.h
│
└─src
CMakeLists.txt
main.cpp
project/CMakeLists.txt
# 工程名字
PROJECT(demo)
cmake_minimum_required(VERSION 2.8)
add_subdirectory(func)
add_subdirectory(calc)
add_subdirectory(src)
\calc\CMakeLists.txt
STATIC 是表示静态库编译的意思,动态库比静态库稍复杂一些,头文件源文件第三方库关系决定是不是PUBLIC PRIVATE还是INTERFACE
add_library(calc STATIC Calc.cpp)
target_include_directories(calc PUBLIC ./)
\src\CMakeLists.txt
add_executable(demo main.cpp)
target_link_libraries(demo calc func)
这个例子比较简单,但大致框架就是这样,用cmake比手动写makefile要方便很多。
github地址
https://github.com/New91/cpp_cmake_build