文件的tree结构如下所示
在build目录下执行cmake:
cmake ../ //生成makefile
make //编译
若想清理cmake产生的文件,直接删掉build
rm -r build
顶层 CMakeLists.txt
cmake_minimum_required(VERSION 3.5) // 限制版本号,因为有的低版本cmake编译会出错
project(HELLO) // 设定工程的名字
add_subdirectory(libhello) //add_subdirectory 命令,该命令告诉 cmake 去子目录中寻找
新的CMakeLists.txt 文件并解析它
add_subdirectory(src)
libhello 目录下的 CMakeLists.txt
add_library(libhello hello.c) //编译静态库文件
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) //改变库的输出路径
set_target_properties(libhello PROPERTIES OUTPUT_NAME "hello") //给静态库改名字
add_library(libhello SHARED hello.c) #生成动态库文件
add_library(libhello STATIC hello.c) #生成静态库文件
如果没有采用变量 默认为静态库
src 目录下的 CMakeLists.txt
include_directories(${PROJECT_SOURCE_DIR}/libhello) //include_directories 命令用来指明
//头文件所在的路径,并且使用到了cmake的
//PROJECT_SOURCE_DIR 变量
//该变量指向工程源码的根目录。
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) //改变输出路径 PROJECT_BINARY_DIR 指向
//项目编译输出目录路径
add_executable(hello main.c) //编译
target_link_libraries(hello libhello) //链接libhello库