CMake-正规程序编译

正规组织结构下编译

正规组织结构 指的是文件组织结构规范工整。一般情况下分为bin build include src lib这些文件夹。例如在写使用线程进行tcp连接的demo中,组织架构如下:

bin中存放可执行的二进制文件;
build为编译文件夹;
include存放所有的头文件;
lib存放库文件,本文中没有使用;
src存放源文件,所有的.cpp .c文件存放的地方。

使用build文件夹存在编译中间产物的方法可以叫做外部编译:out-of-source

CMakeLists语法说明

CMakeLists需要在各级目录下都有一个,顶层目录下的CMakeLists为主要的编译程序。

# 编译器版本
cmake_minimum_required(VERSION 2.8)

# 项目名
project(demo)

# 设置编译器
SET(CMAKE_CXX_COMPILER "gcc")   

# 设置编译选项,O3优化,多线程
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -march=native -O3 -pthread" )

# 增加自文件夹,这里比较重要,
# 程序执行到这里会进入src文件夹中的CMakelists递归调用
add_subdirectory(src)
  • set 设置变量名
  • 命令大小写无关,变量大小写相关,使用统一风格即可,ROS中为小写

在src文件夹下的CMakeLists.txt:


# 将.文件夹下的所有源文件加入 SRC_LIST变量中
aux_source_directory(. SRC_LIST)

# 添加头文件的位置
include_directories(${PROJECT_SOURCE_DIR}/include)

# 编译可执行文件
add_executable(main ${SRC_LIST})

# 多线程中需要使用
target_link_libraries(main pthread)

# 设置可执行文件输出目录,非必须
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

编译

进入build文件夹

cmake ..
make

这个..指代父目录,实际上build文件夹可以创建在任意位置,cmake时指定CMake工程所在的文件夹即可

posted @ 2024-08-13 11:00  啊哈利姆  阅读(19)  评论(0)    收藏  举报