cmake基础笔记

                                 CMakeLists.txt编写及常用命令

         C/C++项目跨平台编译时,CMake经常用到,在windows的vs中配置工程则直接在属性中配置相应的三方头文件及库很方便,通过编写CMakeLists.txt同样可以实现这种工程依赖的配置。

一、常用命令

   1)指定cmake最低版本:

  cmake_minimum_required(VERSION 2.8)

   2)指定项目名称:

project(cmakefirst C CXX)

   3)设置C/C++编译选项

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS" }

 

   4)附加包含目录(第三方依赖头文件目录)

 include_directories(usr/local/cuda/include)

   5) 附加库目录(第三库目录)

link_directories(usr/local/lib)

   6) 添加三方依赖(opencv、cuda之类的)

      find_package( OpenCV REQUIRED )

      include_directories(${OpenCV_INCLUDE_DIRS})

     target_link_libraries(opencv_Test ${OpenCV_LIBS})

7) 指定需要编译的代码

 (1)第一种方式

扫描二维码关注公众号,回复: 4415499 查看本文章
    aux_source_directory("./src" src) #所有源文件(src目录下)赋值给变量src

(2)第二种方式

file(GLOBTEST_SRC ${CMAKE_CURRENT_LIST_DIR}/src/*.h

                  ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp)

set(TEST_COMPILE_CODE ${TEST_SRC})

8)编译为动态库

add_library(opencv_Test SHARED ${TEST_COMPILE_CODE})

  9)编译为静态库

add_library(opencv_Test STATIC ${TEST_COMPILE_CODE})

  10)编译为可执行文件

add_executable(opencv_Test ${TEST_COMPILE_CODE})

  11)链接第三方库

target_link_libraries(opencv_Test ${TEST_LINKER_LIBS})
 #空格并添加相应的库(windows下为库的名称

#opencv_world310,ubuntu下为库的名称及其后缀,如#libcaffe.so)

#如果没有添加库目录则直接带上库的路径及库名称

 

12)设置输出目录(根据需要选则使用)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY your path)

2、一个demo

#第一CMake方式的学习案例:仅仅是依赖OPENCV的三方库

#功能:读取并显示图片

#作者:Sygoing

#日期:2018.11.29



#1.cmake verson,指定cmake的最小版本号

cmake_minimum_required(VERSION 2.8)



#2.project name,指定项目的名称,一般和项目的文件夹名称对应

project(cmakefirst C CXX)



#3.set environment variable,设置环境变量

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")  



#-------此处为三方依赖的头文件 对应VS属性的常规包含目录---------

#4.include头文件目录

include_directories(${CMAKE_CURRENT_LIST_DIR}/3rdparty/include/Opencv

                    ${CMAKE_CURRENT_LIST_DIR}/3rdparty/include/Opencv/opencv

                    ${CMAKE_CURRENT_LIST_DIR}/3rdparty/include/Opencv/opencv2

                    )



#-------此处为三方依赖的Lib文件所在目录以及具体依赖的Lib文件名列表---------                               

#5.library目录及name名称

link_directories(${CMAKE_CURRENT_LIST_DIR}/3rdparty/lib)

list(APPEND TEST_LINKER_LIBS opencv_world320)





#-------此处为本项目需要编译的头文件和源文件---------

#6.source directory源文件目录

file(GLOB TEST_SRC ${CMAKE_CURRENT_LIST_DIR}/src/*.h

                    ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp)

set(TEST_COMPILE_CODE ${TEST_SRC})





#-------设置编译模式:可执行文件、动态库、静态库---------

#7.1.add executable file,编译为可执行文件

add_executable(cmakefirst ${TEST_COMPILE_CODE})

#7.2.add library file,编译为动态库

# add_library(opencv_Test SHARED ${TEST_COMPILE_CODE})



#8.add link library,添加工程所依赖的库

target_link_libraries(cmakefirst ${TEST_LINKER_LIBS})

猜你喜欢

转载自blog.csdn.net/ouyangfushu/article/details/84637830
今日推荐