【问题标题】:How locate .cpp Files in a "src directory" using CMake?如何使用 CMake 在“src 目录”中定位 .cpp 文件?
【发布时间】:2013-08-13 15:50:45
【问题描述】:

我现在正在学习 c++ 和 cmake。我的源文件位于CMakeLists.txt 所在的主目录中。我想将所有源文件存储在 /src 目录中,但我不知道如何在 CMake 中找到它们。

我的 CMake 文件

cmake_minimum_required(VERSION 2.8)
project(game)

set(GAME_ALL_SOURCES
    main.cpp check.cpp
)

add_executable(game ${GAME_ALL_SOURCES})
target_link_libraries(game sfml-graphics sfml-window sfml-system)

任何人建议如何处理它?

最好的问候

【问题讨论】:

    标签: cmake


    【解决方案1】:

    如果你想在src目录中找到所有.cpp文件,你可以这样做

    file(GLOB SOURCES src/*.cpp)
    

    并在需要时使用${SOURCES}。例如:

    add_executable(game ${SOURCES})
    

    【讨论】:

    • 如果您需要包含所有子目录中的所有文件,请使用GLOB_RECURSE 而不是GLOB
    【解决方案2】:

    试试

    set(GAME_ALL_SOURCES
    src/main.cpp src/check.cpp
    )
    

    【讨论】:

    • 嗯。这种方式看起来不太舒服。我在make中寻找像VPATH这样的东西。我从“PROJECT_SOURCE_DIR”Cmake 变量中读取,但我不知道如何使用它。
    • PROJECT_SOURCE_DIR 不是为了那个目的。此变量定义为 cmake 处理的最后一个 PROJECT() 的位置。
    • 顺便说一句。这回答了我使用 CMake 生成所有项目 5 年多以来所做的事情。
    • 另外,即使 PROJECT_SOURCE_DIR 是为此目的,写 set(GAME_ALL_SOURCES ${PROJECT_SOURCE_DIR}/main.cpp ${PROJECT_SOURCE_DIR}/check.cpp ) 会不会更痛苦
    • +1 用于此解决方案,因为它允许您列出和分组特定文件。如果您使用的是 CMake 3.12+,则可以使用 list(TRANSFORM GAME_ALL_SOURCES PREPEND "src/") 重复添加源目录 ("src/"),如 this answer 中所述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2017-04-28
    • 2014-11-25
    • 1970-01-01
    相关资源
    最近更新 更多