CMake
CMake 会生成 Makefile 使用 make 来执行,安装:sudo apt install -y cmake gcc g++ gdb
新建 cmake_demo 文件夹,项目名也叫 cmake_demo。在 CMakeLists.txt 中定义
#cmake_minimum_required(VERSION 3.18) project(cmake_demo)
在 cmake_demo 下新建 main.c 文件
add_executable(main main.cc)
如果有多个 C 文件,执行 main 方法
file(GLOB files *.c) foreach (file ${files}) string(REGEX REPLACE ".+/(.+)\\..*" "\\1" exe ${file}) add_executable(${exe} ${file}) message(\ \ \ \ --\ src/${exe}.c\ will\ be\ compiled\ to\ bin/${exe}) endforeach ()
添加三方库
find_library(LIBPCAP pcap) find_library(LIBPTHREAD pthread)
添加自己的库,例如 cmake_demo/libtest,先在 cmake_demo/CMakeLists.txt 中添加
add_subdirectory("${PROJECT_SOURCE_DIR}/libtest")
然后 cmake_demo/libtest/CMakeLists.txt 如下
file(GLOB LIB_SOURCES "*.cc" "util/*.cc") add_library(LIBTEST STATIC ${LIB_SOURCES})
最后添加编译器头文件搜索路径,假设 libtest 和 libtest/util 下都有 .h 文件
#可以选择让添加的路径位于搜索列表的开头或结尾。默认 AFTER include_directories(AFTER "${PROJECT_SOURCE_DIR}/libtest") include_directories(BEFORE "${PROJECT_SOURCE_DIR}/libtest/util")
使用库
add_executable(main main.cc) target_link_libraries(main LIBTEST)
测试,新建 cmake_demo/cmake/test.cmake
enable_testing() message("enable_testing") #add_executable(mian mian.cc) add_test(NAME mian COMMAND mian arg1 arg2 COMMENT "Testing main...")
在 cmake_demo/CMakeLists.txt 中添加
include(cmake/test.cmake)
https://www.gnu.org/software/make