动机:从Eclipse转到CLion开发。CLion组织工程文件依赖cmake工具,只要编写好CMakeLists.txt,cmake工具就能帮我们生成Makefile,进而完成程序构建。如果所有源文件都在一个目录下,那么一个CMakeLists.txt就搞定了。
1. 确定cmake最低版本需求
cmake_minimum_required(VERSION 3.15)
2. 确定工程名字
project(xxx)
这个不是必须,但是最好写一下,这一行会引入两个变量XXX_BINARY_DIR (二进制文件保存路径)和 XXX_SOURCE_DIR(源代码保存路径)
3. 需要添加的库
#非必须,选定库位置
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/local/share/OpenCV")
#添加库
find_package(OpenCV REQUIRED)
find_package令CMake搜索所有名为Find.cmake的文件,3.2.0 REQUIRED给出需要的具体版本,以避免一台电脑安装了多个版本opencv而造成不必要的错误。通常情况下,通过设置CMAKE_PREFIX_PATH来设置CMake搜索路径,通常情况下不加也可以,但考虑到代码的可移植性,最好还是对搜索路径进行对应设置。
4. 添加头文件
#三种方法
include_directories(include)
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(/usr/local/cuda-8.0/include/)
如上,将头文件所在路径写在括号内即可(上例中将头文件放在了include文件夹中),而需要的一些库的头文件可以如2行变量的形式,也可以如3行直接给出库头文件所在的位置。
5. 确定编译语言
set(CMAKE_CXX_STANDARD 14)
6. 添加源代码
set(SOURCE_FILES main.cpp)
7. 生成可执行文件
add_executable(untitled main.cpp)
8. 编译动态库并链接库文件
target_link_libraries(untitled ${OpenCV_LIBS})
以上为cmakelist.txt基础结构。
—————————————————————————
以下为当前项目实例
#define cmake version
cmake_minimum_required(VERSION 3.15)
#set(CMAKE_SYSTEM_PROCESSOR aarch64)
#set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version")
#define compilers
#set(CMAKE_C_COMPILER "/usr/bin/aarch64-linux-gnu-gcc")
#set(CMAKE_CXX_COMPILER "/usr/bin/aarch64-linux-gnu-g++")
#define project name
project(untitled)
#find package
find_package(OpenCV REQUIRED)
if(NOT OpenCV_FOUND)
message(WARNING "OpenCV not found!")
else()
#add head file
include_directories(${OpenCV_INCLUDE_DIRS})
endif()
# define compile language
set(CMAKE_CXX_STANDARD 14)
#add source code
set(SOURCE_FILES main.cpp)
#generate executable file
add_executable(untitled main.cpp)
#link libraries
target_link_libraries(untitled ${OpenCV_LIBS})
参考
CMakeList的基本写法
https://blog.csdn.net/u010122972/article/details/78216013
文章评论