|
cmake打包静态与动态库并测试,封装成cmake模块供别人使用(附件有demo程序)
FIND_PATH(UTILSBOX_INCLUDE_DIR utilsbox.h /usr/include /usr/local/include)
FIND_LIBRARY(UTILSBOX_LIBRARY NAMES utilsbox PATH /usr/lib /usr/local/lib)
FIND_PACKAGE(UTILSBOX)
IF(UTILSBOX_FOUND)
MESSAGE(STATUS "UTILSBOX_FOUND")
INCLUDE_DIRECTORIES(${UTILSBOX_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(curltest ${UTILSBOX_LIBRARY})
ENDIF()
如果你不使用 FIND_PATH,CMAKE_INCLUDE_PATH 变量的设置是没有作用的
CMAKE_LIBRARY_PATH 可以用在 FIND_LIBRARY 中
如果没有在同一个 CMakeLists.txt 中打开ENABLE_TESTING()指令,任何 ADD_TEST 都是无效的
INCLUDE 指令:用来载入 CMakeLists.txt 文件,也用于载入预定义的 cmake 模块(gnuradio大量这样用的)
CMAKE_MODULE_PATH
INSTALL(FILES utilsbox.h DESTINATION include)
INSTALL(TARGETS utilsbox utilsbox_shared
# 动态库安装位置
LIBRARY DESTINATION lib
# 静态库安装位置
ARCHIVE DESTINATION lib
)
难道动态库 静态库只能安装到系统吗?才能被调用? Found UtilsBox: /usr/local/lib/libutilsbox.so
jiang@jiang-Ubuntu:~/c_c++_works/cmake_demo_jjj/cmake-demo-master/cmake-utilsbox-lib/build$ sudo make install
[sudo] jiang 的密码:
[ 33%] Built target utilsbox_shared
[ 66%] Built target utilsbox
[100%] Built target utilsbox-test
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/include/utilsbox.h
-- Installing: /usr/local/lib/libutilsbox.a
-- Installing: /usr/local/lib/libutilsbox.so
|
|