CMakeLists.txt编写
单目录单文件
#声明要求的cmake最低版本
cmake_minimum_required(VERSION 3.10)
#声明一个cmake工程,工程名为demo
project(demo)
#生成可执行文件,可执行文件名为main
add_executable(main a.c)
- cmake ./ 当前目录下执行CMakeLists.txt文件
- make 执行Makefile文件
- ./ 运行生成的程序
单目录多文件
#声明要求的cmake最低版本
cmake_minimum_required(VERSION 3.10)
#声明一个cmake工程,工程名为demo
project(demo)
#发现一个目录下所有的源代码文件并将列表存储在一个变量中
aux_source_directory(./ DIR_SRCS)
#生成可执行文件
add_executable(main ${DIR_SRCS})
多目录多文件
子目录下CMakeLists.txt
#发现一个目录下所有的源代码文件并将列表存储在一个变量中
aux_source_directory(. DIR_INC_SRCS)
#生成动态库或静态库 STATIC静态库 SHARED动态库
add_library(Inc STATIC ${DIR_INC_SRCS})
根目录下CMakeLists.txt
#声明要求的cmake最低版本
cmake_minimum_required(VERSION 3.10)
#声明一个cmake工程,工程名为demo
project(demo)
#向工程添加多个特定的头文件搜索路径 防止出现没有那个文件或目录的报错 或者在包含头文件时添加路径 如./inc/gpio_demo.h
include_directories(./inc)
#向当前工程添加存放源文件的子目录
add_subdirectory(./inc)
#发现一个目录下所有的源代码文件并将列表存储在一个变量中
aux_source_directory(./ DIR_SRCS)
#生成可执行文件
add_executable(main ${DIR_SRCS})
#为target添加需要链接的共享库
target_link_libraries(main Inc)
多目录多文件标准工程
子目录inc下CMakeLists.txt
#发现一个目录下所有的源代码文件并将列表存储在一个变量中
aux_source_directory(. DIR_INC_SRCS)
#设置文件的输出路径 放在lib文件夹下
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
#生成动态库或静态库 STATIC静态库 SHARED动态库
add_library(Inc STATIC ${DIR_INC_SRCS})
子目录src下CMakeLists.txt main.c文件包含头文件时需要添加路径,如“…/inc/gpio_demo.h”
#向工程添加多个特定的头文件搜索路径
include_directories(${PROJECT_SOURCE_DIR}/inc)
#设置可执行文件的输出路径 放在bin文件夹下
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
#发现一个目录下所有的源代码文件并将列表存储在一个变量中
aux_source_directory(./ DIR_INC_SRCS)
#生成可执行文件
add_executable(main ${DIR_INC_SRCS})
#为target添加需要链接的共享库
target_link_libraries(main Inc)
根目录下CMakeLists.txt
#声明要求的cmake最低版本
cmake_minimum_required(VERSION 3.10)
#声明一个cmake工程,工程名为demo
project(demo)
#向当前工程添加存放源文件的子目录
add_subdirectory(./inc)
add_subdirectory(./src)
- 编译前创建一个build目录,要把编译的文件全部放到这里
- cd build/
- cmake …
- make
子目录
add_subdirectory(./inc)
add_subdirectory(./src)
- 编译前创建一个build目录,要把编译的文件全部放到这里
- cd build/
- cmake ..
- make