最近接觸一個項目,只有一個源碼目錄,目錄裏面有好幾百的源碼文件。看到第一眼就有種想收拾收拾的感覺,把功能相似,業務相近的合到一個目錄中去。讓代碼目錄結構更清晰一些。
但我看是動手改的時候,複製源文件到新建目錄之後,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