cmake学习记录(一)

cmake学习记录(一)

项目背景:s10缺陷检测需对基于halcon开发的代码移植到工程机中。

2020.6.3 反复查阅,已调通…

 CMake 最低版本号要求
cmake_minimum_required(VERSION 3.10.2)
#项目信息
project(helloworld)
#和下一句一样定义根目录
set(HALCONROOT /opt/halcon)
if(DEFINED ENV{HALCONROOT} AND NOT $ENV{HALCONROOT} STREQUAL "")
  message("Using HALCONROOT " $ENV{HALCONROOT})
  STRING(REGEX REPLACE "\\\\" "/" HALCONROOT $ENV{HALCONROOT}) 
endif()
#寻找包的关键语句 文件夹中必须包含make文件下 里面有findpackage函数
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
find_package(Halcon)
set (INC_DIRS ${INC_DIRS} ${HALCON_INC_DIRS})
set (LIBS ${LIBS} ${HALCON_LIBS})
add_executable(helloworld hello.cpp)
INCLUDE_DIRECTORIES(/opt/halcon/include)
INCLUDE_DIRECTORIES(/opt/halcon/include/halconcpp)
INCLUDE_DIRECTORIES(/opt/halcon/include/halconc)
INCLUDE_DIRECTORIES(/opt/halcon/include/hdevengine)
INCLUDE_DIRECTORIES(/opt/halcon/include/com)
INCLUDE_DIRECTORIES(/opt/halcon/include/hlib)

#set(LINK_DIR /opt/halcon//lib/x64-win64)
#link_directories(${LINK_DIR})

target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBS})

总结:
1.核心是找到头文件include和库文件lib,故其需要路径INCLUDE_DIRECTORIES和target_link_libraries 路径和路径及其名称,但是文件.a或.so很多时需要利用findpackage来找,findpackage又需要建立新的make文件夹才行。最后,编译的目的是生成可执行文件add_executable(helloworld hello.cpp)还是静态库add_library(${PROJECT_NAME} ${SOURCE} ${HEADER})。

2.多去看看halcon生成的cmakelists。

3.Cmake. 位置决定外部编译还是内部编译,即cmakefile在那里,而make是基于cmakefile来进行编译的。

4.Include和lib是一体的,声明与实现。在我理解的角度,和函数所在位置类似
在main之前定义函数,同一个cpp。
保证代码简约直观,自定义一个类,封装在同一个项目中。
第三方库,需要引用必须按照路径搜索调用。

5.明白一个工作文件都要哪些部分?而安装好的软件又有哪些部分?
Include、lib、bin、src、dos、example、lisence

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值