CMakeList汇总

cmake_minimum_required(VERSION 2.8.3) 
PROJECT (HELLO)   #工程名

SET( MAIN_LIST main.cpp )        #定义一个变量名
#SET(MAIN_LIST "${MAIN_LIST} -std=c++11")
#add_definitions(-std=c++11) # Use C++11

MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})#显示信息
MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})#显示信息


AUX_SOURCE_DIRECTORY(src DIR_SRCS) SET(PICAR_SERVER ${DIR_SRCS} ) ADD_EXECUTABLE(${PROJECT_NAME} ${PICAR_SERVER})
ADD_EXECUTABLE(hello ${MAIN_LIST} ) #hello 为编译后的目标文件名 ADD_EXECUTABLE(hello main.cpp) #hello 为编译后的目标文件名 ADD_SUBDIRECTORY ( source_dir [ binary_dir ] [ EXCLUDE_FROM_ALL ] ) #向当前工程添加存放源文件的子目录 并可以指定目标二进制存放的位置 EXCLUDE参数的含义是将这个 目录从编译过程中排除,比如example,可以就工程构建完成后,单独进来构建 INCLUDE_DIRECTORIES( [AFTER
|BEFORE] [SYSTEM] dir1 dir2 ... ) #向当前工程添加多个指定的头文件搜索路径,路径之间用空格分割 include_directories( ${catkin_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/sdk/include ${PROJECT_SOURCE_DIR}/sdk/src ) TARGET_LINK_LIBRARIES( target library1 library ... ) #添加共享库链接 可写成hello,也可写成libhello.so #使用了外部库,事先不知道头文件和链接库的位置 find_package(<name>) 会在模块路径中寻找name.cmake。 例:fing_package(BZip2) if(BZIP2_FOUND) include_directories( ${BZIP_INCLUDE_DIR} ) target_link_libraries( 工程名 ${BZIP2_LIBRARIES} ) endif(BZIP2_FOUND) find_library( libpaths libhello.so lib ) 找到自定义的库,不需要安装 libpaths为变量 libhello.so为要找的库, lib为路径 target_link_libraries( usehello ${libpaths} ) 将找到的库的变量链接到工程 make clean 可对构建结果进行清理 建立共享库 SET(LIBHELLO_SRC hello.c) ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) ADD_LIBRARY( libname [ SHARED|STATIC|MODULE ] [EXCLUDE_FROM_ALL] source1 source2 ... ) #SHARED 动态库 STATIC静态库 MODULE不常用 INSTALL(TARGETS hello hello_static #TARGETS为二进制、动态库、静态库 LIBRARY DESTINATION lib #lib为相对位置,针对于DCMAKE_INSTALL_PREFIX=/usr 下 ARCHIVE DESTINATION lib) #可以使用make install命令将生成的libhello.so libhello_static.a 安装到/usr/lib下。 其中ARCHIVE是静态库的关键字,LIBRARY是动态库的关键字 INSTALL(FILES hello.h DESTINATION include/hello) #FILES普通文件安装, #可以将hello.h 安装到/usr/include/hello中 cmake -DCMAKE_INSTALL_PREFIX=/usr ..

cmake_minimum_required(VERSION 2.8.3) PROJECT (HELLO)   #工程名
SET( MAIN_LIST main.cpp )#定义一个变量名#SET(MAIN_LIST "${MAIN_LIST} -std=c++11")#add_definitions(-std=c++11) # Use C++11
MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})#显示信息MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})#显示信息

ADD_EXECUTABLE(hello ${MAIN_LIST} )#hello 为编译后的目标文件名
ADD_EXECUTABLE(hello main.cpp)#hello 为编译后的目标文件名

ADD_SUBDIRECTORY (  source_dir  [ binary_dir ]  [ EXCLUDE_FROM_ALL ] )#向当前工程添加存放源文件的子目录   并可以指定目标二进制存放的位置  EXCLUDE参数的含义是将这个目录从编译过程中排除,比如example,可以就工程构建完成后,单独进来构建
INCLUDE_DIRECTORIES( [AFTER|BEFORE] [SYSTEM] dir1 dir2 ... )#向当前工程添加多个指定的头文件搜索路径,路径之间用空格分割include_directories(  ${catkin_INCLUDE_DIRS}  ${PROJECT_SOURCE_DIR}/src  ${PROJECT_SOURCE_DIR}/sdk/include  ${PROJECT_SOURCE_DIR}/sdk/src)

TARGET_LINK_LIBRARIES( target library1 library ... )#添加共享库链接   可写成hello,也可写成libhello.so
#使用了外部库,事先不知道头文件和链接库的位置find_package(<name>)会在模块路径中寻找name.cmake。例:fing_package(BZip2)    if(BZIP2_FOUND)include_directories( ${BZIP_INCLUDE_DIR} )target_link_libraries( 工程名 ${BZIP2_LIBRARIES} )    endif(BZIP2_FOUND)
find_library( libpaths libhello.so lib )

找到自定义的库,不需要安装     libpaths为变量   libhello.so为要找的库,  lib为路径
target_link_libraries( usehello ${libpaths} )




将找到的库的变量链接到工程

make clean  可对构建结果进行清理

建立共享库SET(LIBHELLO_SRC hello.c)
ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC})
ADD_LIBRARY( libname  [ SHARED|STATIC|MODULE ]  [EXCLUDE_FROM_ALL]  source1 source2 ... )#SHARED 动态库   STATIC静态库    MODULE不常用      
INSTALL(TARGETS hello hello_static  #TARGETS为二进制、动态库、静态库LIBRARY DESTINATION lib#lib为相对位置,针对于DCMAKE_INSTALL_PREFIX=/usr 下ARCHIVE DESTINATION lib)#可以使用make install命令将生成的libhello.so libhello_static.a 安装到/usr/lib下。其中ARCHIVE是静态库的关键字,LIBRARY是动态库的关键字
INSTALL(FILES hello.h DESTINATION include/hello) #FILES普通文件安装,#可以将hello.h 安装到/usr/include/hello中
cmake -DCMAKE_INSTALL_PREFIX=/usr ..

猜你喜欢

转载自www.cnblogs.com/penuel/p/11265627.html