正规组织结构下编译
正规组织结构 指的是文件组织结构规范工整。一般情况下分为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
标签:src,CMakeLists,CMake,正规,编译,文件夹,build,include From: https://www.cnblogs.com/firestone/p/18356446这个..指代父目录,实际上build文件夹可以创建在任意位置,cmake时指定CMake工程所在的文件夹即可