記錄下cmake學習過程,以后還會補充
- 單目錄單文件
demo1 目錄下只有一個a1.cpp, 如下圖
[root@localhost demo1]# tree
.
├── a1.cpp
└── CMakeLists.txt
編寫CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 PROJECT(demo1)4 5 ADD_EXECUTABLE(demo1out a1.cpp)
命令行執行 cmake CMakeLists.txt, 會形成
CMakeCache.txt CMakeFiles cmake_install.cmake Makefile
命令行執行make,就會編譯出可執行文件demo1out
- 單目錄多文件
目錄結構如圖:
[root@localhost demo2]# tree
.
├── a1.cpp
├── CMakeLists.txt
├── p1.cpp
└── p1.h
編寫CMakeLists.txt,
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 PROJECT(demo2)4 #發現一個目錄下所有的源代碼文件并將列表存儲在一個變量中,把當前目錄下的所有源碼文件名賦給變量SOURCE_DIR_15 AUX_SOURCE_DIRECTORY(./ SOURCE_DIR_1) 6 7 ADD_EXECUTABLE(demo2out ${SOURCE_DIR_1})
- 多目錄多文件
a1.cpp 要使用 testlib目錄下的文件編譯成的靜態庫
[root@localhost demo3]# tree
.
├── a1.cpp
└── testlib├── p1.cpp└── p1.h
先編寫子目錄testlib里面的CMakeLists.txt
root@localhost demo3]# tree
.
├── a1.cpp
├── CMakeLists.txt
└── testlib├── CMakeLists.txt├── p1.cpp└── p1.h
1)demo3/testlib/CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 AUX_SOURCE_DIRECTORY(./ SOURCE_DIR_1)4 5 ADD_LIBRARY(plib ${SOURCE_DIR_1})#默認生成靜態庫吧
2)demo3/CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)2 3 PROJECT(demo3)4 5 ADD_SUBDIRECTORY(./testlib) #添加子目錄路徑6 INCLUDE_DIRECTORIES(./testlib) #添加頭文件路徑7 AUX_SOURCE_DIRECTORY(./ SOURCE_DIR)8 9 ADD_EXECUTABLE(demo3out ${SOURCE_DIR})10 11 TARGET_LINK_LIBRARIES(demo3out plib) #鏈接庫