cmake_minimum_required(VERSION 3.8)
project(OPT_LCD_LIB)
# 打印消息
message(${PROJECT_SOURCE_DIR})
message(${PROJECT_BINARY_DIR})
# 给文件名/路径名或其他字符串起别名,用${变量}获取变量内容
#set(变量 文件名/路径/...)
set(INSTALL_TARGET_DIR /usr/bin/)
set(SRC_LIST
opt_lcd_demo.cpp
)
set(LIB_LIST
opt_lcd.cpp
)
# 将.cpp/.c/.cc文件生成.a静态库
# 注意,库文件名称通常为libxxx.so,在这里只要写xxx即可
# add_library(库文件名称 SHARED 文件)
add_library(OPT_LCD_LIB ${LIB_LIST})
# 将.cpp/.c/.cc文件生成可执行文件
# add_executable(可执行文件名称 文件)
add_executable(opt_lcd_demo ${SRC_LIST})
#在编译可执行文件opt_lcd_demo的时候将其链接到OPT_LCD_LIB库去编译
target_link_libraries(opt_lcd_demo OPT_LCD_LIB)
#将编译出来的库文件拷贝到/usr/lib目录下
install(TARGETS OPT_LCD_LIB
LIBRARY DESTINATION /usr/lib
)
install(TARGETS opt_lcd_demo
RUNTIME DESTINATION /opt_test
)
MESSAGE(${CMAKE_CURRENT_SOURCE_DIR} "==CMAKE_CURRENT_SOURCE_DIR=")
MESSAGE(${CMAKE_STRIP} "==CMAKE_STRIP")
MESSAGE(${CMAKE_C_COMPILER} "==CMAKE_C_COMPILER")
关于Cmake的install命令使用
install命令
install用于指定在安装时运行的规则。它可以用来安装很多内容,可以包括目标二进制、动态库、静态库以及文件、目录、脚本等:
install(TARGETS <target>... [...]) //目标文件的安装
install({FILES | PROGRAMS} <file>... [...]) //普通文件的安装
install(DIRECTORY <dir>... [...]) // 目录的安装
install(SCRIPT <file> [...]) //安装时脚本的运行
install(CODE <code> [...])
install(EXPORT <export-name> [...])
目标文件的安装
install(TARGETS targets... [EXPORT <export-name>]
[[ARCHIVE|LIBRARY|RUNTIME|OBJECTS|FRAMEWORK|BUNDLE|
PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE]
[DESTINATION <dir>]
[PERMISSIONS permissions...]
[CONFIGURATIONS [Debug|Release|...]]
[COMPONENT <component>]
[NAMELINK_COMPONENT <component>]
[OPTIONAL] [EXCLUDE_FROM_ALL]
[NAMELINK_ONLY|NAMELINK_SKIP]
] [...]
[INCLUDES DESTINATION [<dir> ...]]
)
参数中的TARGET
可以是很多种目标文件,最常见的是通过ADD_EXECUTABLE或ADD_LIBRARY定义的目标文件,即可执行二进制、动态库、静态库:
例如:
INSTALL(TARGETS myrun mylib mystaticlib #先用TARGETS指定出需要安装的文件
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
上面的例子会将:可执行二进制myrun
安装到${CMAKE_INSTALL_BINDIR}
目录,动态库libmylib.so
安装到${CMAKE_INSTALL_LIBDIR}
目录,静态库libmystaticlib.a
安装到${CMAKE_INSTALL_LIBDIR}
目录。