CMake简单介绍

1.如何写CMakeLists.txt

cmake_minimum_required (VERSION 2.8) #cmake最低版本
project (demo)  #本工程信息,也就是工程名叫demo
add_executable(main main.c)  #表示最终要生成的elf文件的名字叫main,使用的源文件是main.c

 

cmake_minimum_required (VERSION 2.8) #cmake最低版本
project (demo)  #本工程信息,也就是工程名叫demo
add_executable(main main.c testFunc.c) #表示最终要生成的elf文件的名字叫main,使用的源文件是main.c,testFunc.c

 

cmake_minimum_required (VERSION 2.8)
project (demo)
aux_source_directory(. SRC_LIST)#使用aux_source_directory把当前目录下的源文件存列表存放到变量SRC_LIST里
add_executable(main ${SRC_LIST})#add_executable里调用SRC_LIST(注意调用变量时的写法)。

 

cmake_minimum_required (VERSION 2.8)
project (demo)
include_directories (test_func test_func1)#include_directories是用来向工程添加多个指定头文件的搜索路径,路径之间用空格分隔(也可以直接在源文件中写头文件的相对路径来搜索头文件)
aux_source_directory (test_func SRC_LIST)
aux_source_directory (test_func1 SRC_LIST1)
add_executable (main main.c ${SRC_LIST} ${SRC_LIST1})

主目录中的CMakeLists.txt

cmake_minimum_required (VERSION 2.8)
project (demo)
#add_subdirectory命令,可以将指定的文件夹加到build任务列表中。下面是将与当前项目平级的一个目录下的子目录用
add_subdirectory (src)

src中的CMakeLists.txt

aux_source_directory (. SRC_LIST)
include_directories (../include)
add_executable (main ${SRC_LIST})
#EXECUTABLE_OUTPUT_PATH :目标二进制可执行文件的存放位置
#PROJECT_SOURCE_DIR:工程的根目录
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

 

cmake_minimum_required (VERSION 2.8)
project (demo)
aux_source_directory (src SRC_LIST)
include_directories (include)
add_executable (main ${SRC_LIST})
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

主目录中的CMakeList.txt

扫描二维码关注公众号,回复: 11075629 查看本文章
cmake_minimum_required (VERSION 2.8)
project (demo)
add_subdirectory (lib_testFunc)

lib_testFunc中的CMakeLists.txt

aux_source_directory (. SRC_LIST)
#add_library: 生成动态库或静态库(第1个参数指定库的名字;第2个参数决定是动态还是静态,如果没有就默认静态;第3个参数指定生成库的源文件)
add_library (testFunc_shared SHARED ${SRC_LIST})
add_library (testFunc_static STATIC ${SRC_LIST})
#set_target_properties: 设置输出的名称,还有其它功能,如设置库的版本号等等
set_target_properties (testFunc_shared PROPERTIES OUTPUT_NAME "testFunc")
set_target_properties (testFunc_static PROPERTIES OUTPUT_NAME "testFunc")
#LIBRARY_OUTPUT_PATH: 库文件的默认输出路径,这里设置为工程目录下的lib目录
set (LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

cmake_minimum_required (VERSION 2.8)
project (demo)
aux_source_directory (lib_testFunc SRC_LIST)
#add_library: 生成动态库或静态库(第1个参数指定库的名字;第2个参数决定是动态还是静态,如果没有就默认静态;第3个参数指定生成库的源文件)
add_library (testFunc_shared SHARED ${SRC_LIST})
add_library (testFunc_static STATIC ${SRC_LIST})
#set_target_properties: 设置输出的名称,还有其它功能,如设置库的版本号等等
set_target_properties (testFunc_shared PROPERTIES OUTPUT_NAME "testFunc")
set_target_properties (testFunc_static PROPERTIES OUTPUT_NAME "testFunc")
#LIBRARY_OUTPUT_PATH: 库文件的默认输出路径,这里设置为工程目录下的lib目录
set (LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

 

主目录中的CMakeLists.txt

cmake_minimum_required (VERSION 2.8)
project (demo)
add_subdirectory(lib_testFunc)
add_subdirectory (src)

lib_testFunc中的CMakeLists.txt

aux_source_directory (. SRC_LIST)
#add_library: 生成动态库或静态库(第1个参数指定库的名字;第2个参数决定是动态还是静态,如果没有就默认静态;第3个参数指定生成库的源文件)
add_library (testFunc_shared SHARED ${SRC_LIST})
add_library (testFunc_static STATIC ${SRC_LIST})
#set_target_properties: 设置输出的名称,还有其它功能,如设置库的版本号等等
set_target_properties (testFunc_shared PROPERTIES OUTPUT_NAME "testFunc")
set_target_properties (testFunc_static PROPERTIES OUTPUT_NAME "testFunc")
#LIBRARY_OUTPUT_PATH: 库文件的默认输出路径,这里设置为工程目录下的lib目录
set (LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

src中的CMakeLists.txt

aux_source_directory (. SRC_LIST)
# find testFunc.h
include_directories (../lib_testFunc)
#link_directories: 添加非标准的共享库搜索路径
link_directories (${PROJECT_SOURCE_DIR}/lib)
add_executable (main ${SRC_LIST})
#target_link_libraries: 把目标文件与库文件进行链接
target_link_libraries (main testFunc)
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

 

cmake_minimum_required (VERSION 2.8)
project (demo)
aux_source_directory (lib_testFunc SRC_LIST)
#add_library: 生成动态库或静态库(第1个参数指定库的名字;第2个参数决定是动态还是静态,如果没有就默认静态;第3个参数指定生成库的源文件)
add_library (testFunc_shared SHARED ${SRC_LIST})
add_library (testFunc_static STATIC ${SRC_LIST})
#set_target_properties: 设置输出的名称,还有其它功能,如设置库的版本号等等
set_target_properties (testFunc_shared PROPERTIES OUTPUT_NAME "testFunc")
set_target_properties (testFunc_static PROPERTIES OUTPUT_NAME "testFunc")
#LIBRARY_OUTPUT_PATH: 库文件的默认输出路径,这里设置为工程目录下的lib目录
set (LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

aux_source_directory (src SRC_LIST)
# find testFunc.h
include_directories (lib_testFunc)
#link_directories: 添加非标准的共享库搜索路径
link_directories (${PROJECT_SOURCE_DIR}/lib)
add_executable (main ${SRC_LIST})
#target_link_libraries: 把目标文件与库文件进行链接
target_link_libraries (main testFunc)
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

 

cmake_minimum_required (VERSION 2.8)
project (demo)
add_compile_options(-std=c++11 -Wall) 
add_executable(main main.cpp)
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
发布了43 篇原创文章 · 获赞 23 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/zhang14916/article/details/96735778