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

https://cmake.org/cmake/help/latest

https://www.ruanyifeng.com/blog/2015/02/make.html

posted @ 2020-08-14 10:46  江湖小小白  阅读(1075)  评论(0编辑  收藏  举报