这里写自定义目录标题
主要的CMakeLists.txt内容
工程一级目录的配置文件
在一个工程中,一般最外层(也就是和src、build同一级目录)有一个总的CMakeLists文件,然后低级目录比如src里面也有一个cmakelist文件。编译时,每个cmakelist都会产生一个Makefile文件,一般存放在build文件夹下。LINUX中文件都是通过路径进行访问的
cmake_minimum_required(VERSION 3.16)
PROJECT(NEWHELLO)
ADD_SUBDIRECTORY(src) # 指定编译生成的中间文件和目标文件的存放位置
工程二级目录的配置文件(也就是src中的配置文件)
cmake_minimum_required(VERSION 3.16)
ADD_EXECUTABLE(main main.cpp)#生成可执行文件
#信息输出语句 ${}代表对cmake变量的引用
MESSAGE(STATUS "THIS IS SOURCE DIR " ${PROJECT_SOURCE_DIR})
MESSAGE(STATUS "THIS IS BINARY DIR " ${PROJECT_BINARY_DIR})
MESSAGE(STATUS "THIS IS CMAKE_CURRENT_SOURCE_DIR " ${CMAKE_CURRENT_SOURCE_DIR})
MESSAGE(STATUS "THIS IS CMAKE_CURRENT_BINARY_DIR " ${CMAKE_CURRENT_BINARY_DIR})
#头文件 .h 查找
INCLUDE_DIRECTORIES(/usr/include/hello)
#指定生成的可知性文件的存放位置 仅有可执行文件
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
#链接到动态库
#TARGET_LINK_LIBRARIES(main hello)
#链接到静态库
TARGET_LINK_LIBRARIES(main libhello.a)
SET(LIBHELLO_SRC hello.cpp) #显式定义变量
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) #设置生成的可执行文件和库文件的存放位置
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/Lib)
ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) #构建动态库
ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC})#构建静态库
SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello") #同时构建同名的动态库和静态库
#ADD_EXECUTABLE(hello hello.cpp)
SET_TARGET_PROPERTIES(hello PROPERTIES VERSION 1.2 SOVERSION 1) #设置动态库的版本问题
#安装到系统 都是相对路径 include/hello lib
INSTALL(TARGETS hello hello_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) #安装时的库文件设置
INSTALL(FILES hello.h DESTINATION include/hello)#安装时的头文件设置
安装时的指令:
cmake -DCMAKE_INSTALL_PREFIX=/tmp/t2/usr …
make
install
则上面的两个相对路径就是在usr下的