linux下使⽤CMake编译程序
⼀、基本流程
1、编写CMake配置⽂件;
2、执⾏cmake PATH ,其中PATH为所在的⽬录;
3、make.
⼆、相关语法
1、由命令、注释和空格组成。其中命令不区分⼤⼩写,使⽤‘#’进⾏注释,命令由命令名称、⼩括号和参数组成,多个参数间使⽤空格进⾏隔开;
2、cmake_minimum_required(version 3.1.0):指定运⾏CMakeList所需的CMake的最低版本为3.1.0;
3、project(Test):指定项⽬名称为 Test;
4、aux_source_directory(. src):查当前⽬录下的所有源⽂件,将⽂件名保存到src;
5、add_subdirectory(sub):包含⼦⽬录 sub。在编译时先编译⼦⽬录下的和源码;
6、include_directories(${xxx}):包含⽬录,指定头⽂件的搜索路径;
7、link_directories(${xxx}):包含库⽬录,指定外部动态或静态链接库的搜索路径;
8、 add_definitions(xxx):指定编译参数,如(-std=c++11);
9、target_link_libraries:指明编译程序所需的链接库;
10、add_executable(Test ${src}):将src包含的源⽂件编译⽣成可执⾏⽂件 Test;
11、add_library(Test STATIC /SHARED ${src}):将src所包含的源⽂件编译成静态/动态链接库;
12、find_package(name):调⽤预定义在 CMAKE_MODULE_PATH 下的 Find< name >.cmake 模块;
13、message(“xxx”):打印消息;
14、PROJECT_SOURCE_DIR:cmake预定义变量,表⽰⼯程的根⽬录;
15、set(src ${PROJECT_SOURCE_DIR}/src/test.cpp):⾃定义变量 src为对应⽬录下的⽂件test.cpp。
还有很多命令,⽬前只⽤到了这么多,后续⽤到再进⾏记录。
三、⼀个例⼦
这是⼀个调⽤opencv进⾏⼈脸检测的配置⽂件,需要将相关⽂件放在对应⽬录。在⽬录下执⾏:
进⾏编译:
接着执⾏: make,就会⽣成对应的可执⾏⽂件或链接库。四、参考资料cmake_minimum_required (VERSION 3.9.0)
project (Test)
add_definitions (-std=c++11)
# use opencv
cmake如何使用find_package (OpenCV)
if (NOT OpenCV_FOUND)
message (WARNING "OpenCV not found!")
else ()
include_directories (${OpenCV_INCLUDE_DIRS})
endif ()
# headers
include_directories (${PROJECT_SOURCE_DIR}/include )
set (SRC ${PROJECT_SOURCE_DIR}/src/test.cpp)
#lib link
link_directories (${PROJECT_SOURCE_DIR}/lib)
add_executable (Test ${SRC})
target_link_libraries (Test ${OpenCV_LIBS})
cmake .
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论