代码改变世界

cmake的基本语法

2020-08-14 11:17  宋海宾  阅读(284)  评论(0编辑  收藏  举报

1.基础语法

cmake_minimum_required(VERSION 2.8.9)
project(opencvTest)
set(CMAKE_CXX_STANDARD 11)

SET(CMAKE_BUILD_TYPE "Debug")

SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g")
 

2.添加头文件目录

#Bring the headers, such as Student.h into the project
include_directories("/usr/local/include/opencv4/")
 

3.添加动态lib

  link_directories(${PROJECT_SOURCE_DIR}/lib) #添加动态连接库的路径

  target_link_libraries(project_name -lmxnet ) #添加libmxnet.so

 注意:

     1,link_libraries用在add_executable之前,target_link_libraries用在add_executable之后

     2,link_libraries用来链接静态库,target_link_libraries用来链接导入库,即按照header file + .lib + .dll方式隐式调用动态库的.lib库

 

4.执行

#However, the file(GLOB...) allows for wildcard additions:
file(GLOB SOURCES "main.cpp")

add_executable(opencvTest ${SOURCES})
 

5.添加调试信息

#显示OpenCV_INCLUDE_DIRS的值
message(${OpenCV_INCLUDE_DIRS})
 

6.查找库

find_library官方说明
示例 find_library(OpenCV_LIBS opencv_aruco3 "/opt/ros/kinetic/lib/x86_64-linux-gnu" )
意为:在路径/opt/ros/kinetic/lib/x86_64-linux-gnu中寻找名为libopencv_aruco3.so的库,将其命名为OpenCV_LIBS。
正如find_library这个名字所象征的,它只能找一个库,不能同时找多个库,虽然官网有示例说可以加入option实现,但我没有成功。它不能实现类似于aux_source_directory(. SRC)的功能