cmake 实例分析,cmake入门

样例1

假设一个main.cpp(),在同文件夹下include 了A.h,然后A.cpp包含了B.h,那么这个项目的cmake可以这么写:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
CMAKE_POLICY(VERSION 2.8)

FIND_PACKAGE(OpenCV REQUIRED)
上面指明了cmake的版本

然后find_package表明需要用到opencv的库,如果需要其他其他库的话就加进去就好了

aux_source_directory(. DIR_SRCS)
这个是把 . (当前文件夹)的所有文件加进DIR_SRCS里

然后message可以打印一下DIR_SRCS这个变量。

MESSAGE("PROJECT_SOURCE_DIR : " ${DIR_SRCS})

结果是当前文件夹下面的所有cpp

set(CMAKE_CXX_FLAGS "-std=c++11")
这个表明用c++11,不要也行,但是据说要厉害一点

添加生成可执行文件

ADD_EXECUTABLE(Launch ${DIR_SRCS})
TARGET_LINK_LIBRARIES(Launch ${OpenCV_LIBS} )
添加链接,用到了opencv就把lib加进去

全部内容如下:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
CMAKE_POLICY(VERSION 2.8)

FIND_PACKAGE(OpenCV REQUIRED)

INCLUDE_DIRECTORIES(
${PROJECT_SOURCE_DIR}
${OpenCV_INCLUDE_DIRS}
)

#source directory
aux_source_directory(. DIR_SRCS)


MESSAGE("PROJECT_SOURCE_DIR : " ${DIR_SRCS})

set(CMAKE_CXX_FLAGS "-std=c++11")

ADD_EXECUTABLE(Launch ${DIR_SRCS})
TARGET_LINK_LIBRARIES(Launch ${OpenCV_LIBS} )

MESSAGE("OpenCV_LIBS : " ${OpenCV_LIBS})
 



样例2

SET(FLY_CAPTURE_SDK_INCLUDE /usr/include/flycapture)
SET(FLT_CAPTURE_SDK_LIBS /usr/lib/libflycapture.so) 

INCLUDE_DIRECTORIES(
  ${OpenCV_INCLUDE_DIRS}
  ${FLY_CAPTURE_SDK_INCLUDE}
)


如果要包含一些其他库

用set手动设置头文件位置和.so文件,注意.so文件是动态链接文件,win下是.dll,.a文件是静态链接文件,许多.o组成.a

INCLUDE_DIRECTORIES表示在哪里去找include文件

ADD_LIBRARY(acfDetec acfDetect.cpp)
ADD_LIBRARY(convTri convTri.cpp)
...

将一些cpp加入library,这些就会在cmake的位置生成.a文件,这些.a文件是可以直接拷贝给其他程序调用的,就是一些库文件,用法下一篇博客会讲


ADD_EXECUTABLE(subcat main.cpp)
TARGET_LINK_LIBRARIES(subcat acfDetec convTri gradientMex imPad imResample rgbConvert wrappers ${OpenCV_LIBS} ${FLT_CAPTURE_SDK_LIBS})
然后这个就把上面生成的一些.a链接进去,其实应该像样例1一样写的,这样写太麻烦,注意第一个是可执行文件名


全部内容

CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
CMAKE_POLICY(VERSION 2.8)

#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -mfpmath=sse -mmmx -msse -msse2 -msse3")
#set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")

FIND_PACKAGE(OpenCV REQUIRED)

SET(FLY_CAPTURE_SDK_INCLUDE /usr/include/flycapture)
SET(FLT_CAPTURE_SDK_LIBS /usr/lib/libflycapture.so) 

INCLUDE_DIRECTORIES(
  ${OpenCV_INCLUDE_DIRS}
  ${FLY_CAPTURE_SDK_INCLUDE}
)



ADD_LIBRARY(acfDetec acfDetect.cpp)
ADD_LIBRARY(convTri convTri.cpp)
ADD_LIBRARY(gradientMex gradientMex.cpp)
ADD_LIBRARY(imPad imPad.cpp)
ADD_LIBRARY(imResample imResample.cpp)
ADD_LIBRARY(rgbConvert rgbConvert.cpp)
ADD_LIBRARY(wrappers wrappers.cpp)
#ADD_LIBRARY()


ADD_EXECUTABLE(subcat main.cpp)
TARGET_LINK_LIBRARIES(subcat acfDetec convTri gradientMex imPad imResample rgbConvert wrappers ${OpenCV_LIBS} ${FLT_CAPTURE_SDK_LIBS})
 







  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要创建一个cmake-demo项目的入门教程,首先需要在根目录下创建一个名为CMakeLists.txt的文件,并创建一个名为hello的子目录。可以使用以下命令完成这些操作:mkdir cmake-demo && cd cmake-demo touch CMakeLists.txt mkdir hello 。 然后,在CMakeLists.txt文件中编写CMake命令来配置项目。CMake脚本文件由一系列CMake命令组成,通常以.cmake作为后缀名。你可以使用cmake命令来配置项目,例如:cmake -D <var>=<value> [options] <path/to/source> 。 最后,你可以在hello目录下添加源代码文件,例如一个简单的hello.cpp文件,然后使用CMake来生成构建系统的文件,例如Makefile或Visual Studio的项目文件。运行cmake命令来生成构建系统文件,然后使用构建系统来构建项目。 请注意,这只是一个简单的cmake-demo入门教程的概述,实际上还有很多更详细的内容可以涉及。你可以参考cmake的文档来获取更多的信息,例如使用cmake --help或man cmake命令来查看文档。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [CMake构建工具使用教程](https://blog.csdn.net/zzy979481894/article/details/129109513)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值