cmake 使用 *.cpp 规则创建 Makefile

Joh*_*ker 4 c++ makefile cmake

我刚刚开始使用 cmake,我已经阅读了一些教程并得到了基本的工作。

然而,目前我的 CMakesList.txt 生成一个 Makefile,其中每个 .cpp 都明确命名。这意味着,每当我向项目添加新的 .cpp 时,我都需要重新运行 cmake,然后才能进行 make。虽然这不是什么大问题,但仍然有点烦人。

由于Makefiles可以做类似的事情SOURCES=*.cpp,我想可能有一种方法可以告诉cmake用这样的规则生成Makefile!?

我知道我能做到

cmake_minimum_required(VERSION 2.8)
file(GLOB SRC
    "*.h"
    "*.cpp"
)
add_executable(main ${SRC})
Run Code Online (Sandbox Code Playgroud)

但我仍然必须重新运行 cmake。

Ash*_*kan 5

据我所知,这样做的方法就像你所说的那样,缺点是你每次添加文件时都必须运行cmake。

为了克服这个问题,我通常要做的就是创建一个也调用 cmake 的自定义目标。事情是这样的

ADD_CUSTOM_TARGET(update
    COMMAND ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR}
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
    COMMENT "Cmake and build"
)
Run Code Online (Sandbox Code Playgroud)

有了这个,你可以调用它make update,它会首先调用 cmake 来捕获所有文件,然后启动构建过程。