首页 文章

使用CMake自动将文件夹中的所有文件添加到目标?

提问于
浏览
119

我正在考虑将跨平台项目从Visual C,XCode和makefile中的单独构建管理系统切换到CMake .

我需要的一个基本功能是自动将目录中的所有文件添加到目标 . 虽然这很容易使用make,但使用Visual C和XCode并不容易(如果我错了,请纠正我) . 是否有可能直接在CMake中进行?怎么样?

在学习CMake之前,请随意添加我应该注意的任何其他事情,考虑到目前该项目是中等规模的(8个库,2个可执行文件,8个测试项目,它取决于大约8个外部库) .

2 回答

  • 174

    克莱斯特的答案肯定有效,但有一个重要的警告:

    手动编写 Makefile 时,可以使用函数生成 SRCS 变量以选择所有 .cpp.h 文件 . 如果稍后添加了源文件,则重新运行 make 将包含它 .

    但是,CMake(使用 file(GLOB ...) 之类的命令)将显式生成文件列表并将其放在自动生成的 Makefile 中 . 如果您有新的源文件,则需要通过重新运行 cmake 来重新生成 Makefile .

    编辑:无需删除Makefile .

  • 28

    有可能的 . 例如 . 与 file(GLOB

    cmake_minimum_required(VERSION 2.8)
    
    file(GLOB helloworld_SRC
        "*.h"
        "*.cpp"
    )
    
    add_executable(helloworld ${helloworld_SRC})
    

    请注意,如果添加或删除源文件,则需要手动重新运行 cmake ,因为生成的构建系统不知道何时要求CMake重新生成,并且在每次构建时执行此操作都会增加构建时间 .

相关问题