【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
	)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对你的问题,我可以给你提供一个示例Android CMake构建脚本,用于生成动态并应用第三方动态和静态。请注意,以下示例假设你已经具备一定的Android CMake构建经验,了解如何编写CMakeLists.txt文件,并且已经安装并配置好了必要的工具链。 首先,我们需要在CMakeLists.txt文件中添加以下内容,以指定要构建的动态和相关的第三方: ``` # 指定要构建的动态名称 set(TARGET_LIB my_dynamic_lib) # 添加动态源文件 add_library(${TARGET_LIB} SHARED src/main/cpp/my_dynamic_lib.cpp ) # 添加第三方动态 add_library(third_party_lib SHARED IMPORTED) set_target_properties(third_party_lib PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libthird_party_lib.so) # 添加第三方静态 add_library(third_party_static_lib STATIC IMPORTED) set_target_properties(third_party_static_lib PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libthird_party_static_lib.a) # 链接动态及第三方 target_link_libraries(${TARGET_LIB} third_party_lib third_party_static_lib) ``` 上述代码中,我们首先定义了要构建的动态名称为`my_dynamic_lib`。然后,我们添加了动态的源文件`src/main/cpp/my_dynamic_lib.cpp`。接着,我们添加了第三方动态`libthird_party_lib.so`和第三方静态`libthird_party_static_lib.a`。其中,我们通过`set_target_properties`命令设置了这两个的路径,这里假设这两个已经被放置在了`src/main/jniLibs/${ANDROID_ABI}/`目录下。 最后,我们通过`target_link_libraries`命令将动态和第三方链接起来。 希望这个示例能够帮助到你。如果你还有其他问题或疑问,请随时提出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值