【CMake入门】第三节——构建项目并调用或生成库

系列文章:
【CMake入门】第一节——CMake的安装与简单样例
【CMake入门】第二节——CMake常用指令介绍

构建单文件项目,调用第三方库

# CMake最低版本号要求
cmake_minimum_required(VERSION 2.8)

# 项目名称
project(demo)

# 设置编译方式
set( CMAKE_BUILD_TYPE Release)

# 支持C++11
set( CMAKE_CXX_FLAGS "-std=c++11")

# 查找系统里的OpenCV
# set(OpenCV_DIR "D:/Program Files/opencv-3.4.6/build")
find_package( OpenCV 3 REQUIRED)

# 添加项目包含路径
include_directories( ${OpenCV_INCLUDE_DIRS} )

# 用指定的源文件为工程添加可执行文件,名字为test
add_executable( test test.cpp )

# 为库或可执行文件添加库连接(必须要在add_executable后面)
target_link_libraries( test ${OpenCV_LIBS} )

构建多文件项目,同时自己生成库

# CMake最低版本号要求
cmake_minimum_required(VERSION 2.8)

# 项目名称
project(demo)

# 设置编译方式
set( CMAKE_BUILD_TYPE Release)

# 支持C++11
set( CMAKE_CXX_FLAGS "-std=c++11")

# 查找系统里的OpenCV
find_package( OpenCV 3 REQUIRED)

# 添加项目包含路径
include_directories( 
	${PROJECT_SOURCE_DIR}/include/		#工作空间下的include,同级目录有build、source文件夹
	${OpenCV_INCLUDE_DIRS} 
	)
# message("PROJECT_SOURCE_DIR = " ${PROJECT_SOURCE_DIR})
# set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
# set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
# message("CMAKE_BINARY_DIR = " ${CMAKE_BINARY_DIR})
# message("CMAKE_SOURCE_DIR = " ${CMAKE_SOURCE_DIR}) 

# 将指定的源文件生成链接库文件。STATIC为静态链接库,SHARED为共享链接库
# 这个test.cpp是自己写的,里头有一堆函数,就是没有主函数。我们现在想让这个cpp文件变成一个库,方便我们调用里头的函数
add_library(lib_test ${PROJECT_SOURCE_DIR}/source/test.cpp)

# 为上面自己生成的库或可执行文件添加库连接
target_link_libraries( lib_test
	${OpenCV_LIBS}
	)
	
# 用指定的源文件为工程添加可执行文件,名字为test
add_executable( ${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/testBed/main.cpp )

# 为库或可执行文件添加库连接(必须要在add_executable后面)
# 因为我们主函数调用了我们自己生成的库里头的函数,所以我们在这里同时添加了lib_test这个库的链接
target_link_libraries( ${PROJECT_NAME} 
	${OpenCV_LIBS}
	lib_test
	)

相关推荐

  1. cmake构建动态实例(cmakelist)

    2023-12-10 22:24:02       54 阅读
  2. c++使用cmake生成共享

    2023-12-10 22:24:02       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-10 22:24:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-10 22:24:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-10 22:24:02       87 阅读
  4. Python语言-面向对象

    2023-12-10 22:24:02       96 阅读

热门阅读

  1. kubeadm搭建1.20.7版本k8s

    2023-12-10 22:24:02       50 阅读
  2. CT成像技术—20231205

    2023-12-10 22:24:02       40 阅读
  3. pip基本命令与使用

    2023-12-10 22:24:02       61 阅读
  4. 蓝桥杯 day01 奇怪的数列 特殊日期

    2023-12-10 22:24:02       53 阅读
  5. 信息处理技术员

    2023-12-10 22:24:02       57 阅读
  6. 汽车继电器

    2023-12-10 22:24:02       52 阅读
  7. 使用git出现的问题

    2023-12-10 22:24:02       57 阅读
  8. 【数据结构和算法】反转字符串中的单词

    2023-12-10 22:24:02       68 阅读