标准工程文件cmake全过程(LINUX)

本文详细介绍了如何使用CMake创建并组织一个工程目录,包括创建include和src目录,配置CMakeLists.txt文件来管理头文件、源文件、库文件及可执行文件的生成路径。通过在不同目录的CMakeLists.txt中设置指令,实现了头文件路径的包含,源文件的编译和链接,以及库文件的创建。最后,在项目根目录下进行cmake和make操作,构建整个项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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、最终文件结构如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值