CMake编译install和uninstall链接库文件和可执行文件

install

首先设置需要生成动态/静态链接库的源文件

复制
file (GLOB SRC_FILES
${CMAKE_CURRENT_SOURCE_DIR}/src/xxx.cpp
......
${CMAKE_CURRENT_SOURCE_DIR}/src/xxx.cpp
)

添加源文件到静态库test_s,最终生成test_s.a

add_library(test_s STATIC ${SRC_FILES})

添加源文件到动态库test,最终生成test.so

add_library(test SHARED ${SRC_FILES})

添加可执行文件,链接动态库

target_link_libraries(test_app
test
)

安装上述文件至指定位置,lib和bin是指定位置下的lib文件夹和bin文件夹

install(TARGETS test test_s test_app
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
)

安装头文件至指定位置,假设头文件文件夹位于CMakeList.txt同路径下include/${PROJECT_NAME}和test,安装至指定位置下的include文件夹

install(DIRECTORY include/${PROJECT_NAME}/ test/
DESTINATION include/${PROJECT_NAME}
FILES_MATCHING
PATTERN "*.h" # 匹配.h文件
PATTERN "*.hpp" # 匹配.hpp文件
PATTERN ".svn" EXCLUDE # 排除.svn文件
)

默认情况下上述所有文件会安装至/usr/local下,如果要修改安装位置需要在install前

set(CMAKE_INSTALL_PREFIX "/home/test/xxx")

使用install

sudo make install

uninstall

在CMakeList.txt同路径下执行,会删除所有安装的文件,但是空文件夹会保留

cat install_manifest.txt | sudo xargs rm

要求build文件夹存在且install_manifest.txt文件夹还在
如果没有需要先编译安装后再卸载

posted @   umichan  阅读(622)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示