参考原文:https://www.cnblogs.com/pandamohist/p/13408455.html
演示源码下载地址: https://github.com/mohistH/demo_cmake_dylib
把文仅为参考。 以实际情况为准
│ CMakeLists.txt │ index.txt │ ├─build ├─include │ hello.h │ hi.h │ └─src hello.cxx hi.cxx
cmake_minimum_required(VERSION 3.1) #项目名 project(libhello) # 1、指定库的目录变量 set(libhello_src src/hello.cxx) # 指定头文件搜索路径 include_directories("${PROJECT_SOURCE_DIR}/include") # 2、添加库(对应的两个项目) add_library( hello_shared SHARED ${libhello_src}) add_library( hello_static STATIC ${libhello_src}) # 按照一般的习惯,静态库名字跟动态库名字应该是一致的,只是扩展名不同; # 即:静态库名为 libhello.a; 动态库名为libhello.so ; # 所以,希望 "hello_static" 在输出时,不是"hello_static",而是以"hello"的名字显示,故设置如下 # SET_TARGET_PROPERTIES (hello_static PROPERTIES OUTPUT_NAME "hello") # 3、cmake在构建一个新的target时,会尝试清理掉其他使用这个名字的库, # 因此,在构建libhello.a时,就会清理掉libhello.so. # 为了回避这个问题,比如再次使用SET_TARGET_PROPERTIES定义 CLEAN_DIRECT_OUTPUT属性。 SET_TARGET_PROPERTIES (hello_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES (hello_shared PROPERTIES CLEAN_DIRECT_OUTPUT 1) # 4、按照规则,动态库是应该包含一个版本号的, # VERSION指代动态库版本,SOVERSION指代API版本。 SET_TARGET_PROPERTIES (hello_static PROPERTIES VERSION 1.1 SOVERSION 1) SET_TARGET_PROPERTIES (hello_shared PROPERTIES VERSION 1.1 SOVERSION 1) # 5、若将libhello.a, libhello.so.x以及hello.h安装到系统目录,才能真正让其他人开发使用, # 本例中,将hello的共享库安装到<prefix>/lib目录; # 将hello.h安装<prefix>/include/hello目录。 #INSTALL (TARGETS hello hello_shared LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) #INSTALL (TARGETS hello hello_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) #INSTALL (FILES hello.h DESTINATION include/hello)
xxx/to/path cd build cmake ..
mac没有电了, 来个Windows10的截图吧:
若需要指定输出路径,尝试下面的示例指令:
# 设置VS会自动新建Debug和Release文件夹 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Bin) # 设置分别设置Debug和Release输出目录 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/../../build/Debug) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/Lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/Lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/Bin)
相关知识
unity2D玩家上下左右移动,宠物跟随玩家同步运动。宠物在玩家身后
Machine Learning(二):宠物智能识别之 Using OpenCV with Node.js
宠物牵引绳检测的arm边缘设备安装遇到的问题
库狛和库娃繁育基础指南
狗狗库欣?
宠物号ai生成
ubuntu16.04安装opencv3.4.1时出现: libgtk2.0
《超神宠兽店·动态漫》在线观看
宠物狗的库欣综合征及其症状
犬库兴氏综合征
网址: cmake之生成动态库 https://m.mcbbbk.com/newsview982806.html
上一篇: 猫咪发出像猪一样哼哧哼哧的声音是 |
下一篇: 从理论到实践,如何掌握仓鼠肺细胞 |