1、新建一个工程目录project
mkdir project
2、在project文件中创建include
目录,src
目录,CMakeLists.txt
文件
cd project
mkdir src include
touch CMakeLists.txt
include
目录放头文件,src
文件放源文件
3、在src
目录中除放源文件外,再创建一个CMakeLists.txt
文件
cd project/src
vim CMakeLists.txt
4、src
目录下,CMakeLists.txt
文件内容如下:
include_directories(${PROJECT_SOURCE_DIR}/include)
set(ECECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_PATH}/bin)
aux_source_directory(./ DIR_SRCS)
add_executable(main ${DIR_SRCS})
target_link_libraries(main Include)
各行代码解析:
include_directories(${PROJECT_SOURCE_DIR}/include)
包含头文件路径,${PROJECT_SOURCE_DIR}
指的是该项目根目录路径
set(ECECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
设置make输出的可执行文件保存路径,${PROJECT_BINARY_DIR}
为build文件所在路径
aux_source_directory(./ DIR_SRCS)
将当前文件夹下的所有源文件起别名,DIR_SRCS
为这些源文件的别名,配合下一句使用
add_executable(main ${DIR_SRCS})
生成一个可执行文件,文件名为main,链接的文件为DIR_SRCS
target_link_libraries(main Include)
将目标文件与库文件链接,这里的目标文件为main
文件,库文件为Include
,这里的Include
名字是在project/include目录下的CMakeLists.txt
文件中起名的
5、在include目录中除了放头文件之外,再创建一个CMakeLists.txt
文件
cd include
vim CMakeLists.txt
6、project/include目录下的CMakeLists.txt
文件内容如下:
aux_source_directory(./ DIR_LIB_SRCS)
add_library(Include STATIC ${DIR_LIB_SRCS})
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
各行代码解析:
aux_source_directory(./ DIR_LIB_SRCS)
将当前目录下的所有源文件取别名为DIR_LIB_SRCS
,配和下一句使用
add_library(Include STATIC ${DIR_LIB_SRCS})
将这些文件设置成库文件,文件名为Include
,该库为STATIC
(静态库),库中包含文件为${DIR_LIB_SRCS}
。如果要设置成动态库,则要将STATIC
改成SHARED
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
设置库文件的保存路径,${PROJECT_BINARY_DIR}
代表build所在目录
7、在project目录下的CMakeLists.txt
文件内容如下:
cmake_minimum_required(VERSION 3.0)
project(SoliderFire)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_BUILD_TYPE "Debug")
add_subdirectory(./include)
add_subdirectory(./src)
各行代码解析:
cmake_minimum_required(VERSION 3.0)
设定cmake最低版本,这里设置的是VERSION 3.0
(可以使用cmake --version
查看cmake版本)
project(SoliderFire)
设置工程名称,这里设置为SoliderFire
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_BUILD_TYPE "Debug")
第一句为设置编译选项,"${CMAKE_CXX_FLAGS} -std=c++11"
表示在原有的编译选项下追加支持c++11标准;
第二句为设置编译版本,设定为Debug版本,也可以设置为Release版本
add_subdirectory(./include)
add_subdirectory(./src)
添加项目子目录(只要子目录中包含CMakeLists.txt
文件,就要包含该子目录)
8、回到project路径下,创建build目录,然后再build目录下进行cmake以及make
cd project
mkdir build
cd build
cmake ..
make
9、最终文件结构如下: