CMakeList创建工程及CmakeLists.txt配置

本文介绍了如何使用CMakeLists.txt创建并管理具有多目录结构的工程。通过示例展示了设置源文件路径、编译输出路径、远程调试配置等关键步骤,并提供了入门级别的CMake模板。
cmake_minimum_required(VERSION 2.6)

project(MobileNet-Yolo-Demo) #设置项目名称
set(TARGET_NAME detect) #设置目标文件名称
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)  #设置可执行文件的输出目录
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../lib)  #设置库文件的输出目录

#set(CMAKE_BUILD_TYPE "Release") #设置编译Release 还是Debug版本(Release Debug)
#set(CMAKE_DEBUG_POSTFIX "d") #debug 后缀

# you have add link directories before add target
#opencv3.4.6
include_directories("/usr/local/include") #头文件路径
include_directories("/usr/local/include/opencv")
include_directories("/usr/local/include/opencv2")
link_directories("/usr/local/lib") #库路径
set(OPENCV_LIBS opencv_core opencv_imgcodecs
                opencv_highgui opencv_imgproc
                opencv_videoio)
link_libraries(${OPENCV_LIBS}) #链接共享库

#caffe
include_directories("${PROJECT_SOURCE_DIR}/3rdparty/Caffe-Mobilenet-YOLOV3/include")
link_directories("${PROJECT_SOURCE_DIR}/3rdparty/Caffe-Mobilenet-YOLOV3/lib")
set(CAFFE_LIBS caffe)
li
### 编写和使用CMakeLists.txt编译代码 CMakeLists.txt文件是用于管理C++项目的构建配置,能够简化跨平台的项目编译过程。通过编写合理的CMakeLists.txt脚本,可以实现源代码的自动编译、链接库的处理以及生成可执行文件。 #### 基础结构 一个简单的CMakeLists.txt通常包括以下部分: 1. **指定CMake最低版本**:确保使用的功能与当前CMake版本兼容。 2. **定义项目名称**:为整个工程设置一个逻辑名称。 3. **设置C++标准**:声明项目所需的C++语言标准(如C++17)。 4. **配置编译模式**:例如Debug或Release模式。 5. **包含头文件路径**:将额外的头文件目录添加到搜索路径中。 6. **查找并加载外部依赖库**:利用`find_package()`来引入第三方库。 7. **创建目标**:定义可执行文件或静态/动态库,并进行必要的链接操作。 示例CMakeLists.txt内容如下: ```cmake # 指定所需CMake的最低版本 cmake_minimum_required(VERSION 3.10) # 定义项目名和C++标准 project(MyProject) set(CMAKE_CXX_STANDARD 17) # 设置默认编译类型为Debug if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the build type." FORCE) endif() # 添加头文件搜索路径 include_directories(${PROJECT_SOURCE_DIR}/include) # 查找并加载Eigen库 find_package(Eigen3 REQUIRED) include_directories(${EIGEN3_INCLUDE_DIRS}) # 创建可执行程序 add_executable(myapp main.cpp src/utils.cpp) # 链接Eigen库到应用程序 target_link_libraries(myapp PRIVATE ${EIGEN3_LIBRARIES}) ``` #### 构建流程 在实际开发过程中,推荐采用out-of-source构建方式以保持源码树干净[^3]。具体步骤如下: - 在项目根目录下创建`build`子目录。 - 进入该目录并运行`cmake ..`命令生成Makefile或其他平台特定的构建文件。 - 执行`make`命令开始编译;若需加速可使用`make -jN`其中N代表并行任务数。 - 若有安装需求,则执行`make install`完成部署。 #### 多级目录支持 对于更复杂的多层结构项目,可以通过`add_subdirectory()`指令递归地处理各个子模块。此外,还可以使用`aux_source_directory(. SRC_LIST)`收集当前目录下的所有源文件列表,从而避免手动列出每个`.cpp`文件。 ```cmake # 主CMakeLists.txt add_subdirectory(src) add_subdirectory(tests) # src/CMakeLists.txt aux_source_directory(. SRC_LIST) add_executable(app ${SRC_LIST}) target_link_libraries(app PRIVATE mylib) ``` #### 注释与条件判断 CMake提供了丰富的控制语句,比如块注释可通过`if(FALSE)...endif()`实现[^4]。这有助于临时禁用某些段落而不必删除它们。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值