gpt4 book ai didi

git - 如何在CMake中使其可执行之前检查文件是否存在

转载 作者:行者123 更新时间:2023-12-04 10:31:22 25 4
gpt4 key购买 nike

我有一个 CLion 项目。在里面,我有几个文件(例如 Task1.cpp Task2.cpp )。我将它们存储在 GitHub 中的一个存储库中,但位于不同的分支中(分别为 Task1 Task2 )。因此,当我在笔记本电脑上结帐另一个分支时,本地只剩下一个分支。我需要修改 CMakeLists.txt 以便每次切换分支时都可以构建我的项目而无需编辑它。我试着这样写:

if(EXISTS Task1.cpp)
add_executable(Task1 Task1.cpp)
endif()

if(EXISTS Task2.cpp)
add_executable(Task2 Task2.cpp)
endif()

但似乎 CLion 没有看到(或者可能没有执行)行 add_executable(Task1 Task1.cpp)如果在分支 Task1 中。

最佳答案

来自 CMake documentation , 文件 EXISTS检查仅适用于 路径:

if(EXISTS path-to-file-or-directory)

True if the named file or directory exists. Behavior is well-defined only for full paths. Resolves symbolic links, i.e. if the named file or directory is a symbolic link, returns true if the target of the symbolic link exists.



尝试使用这些文件的完整路径(无论如何,这是一种更安全的方法)。如果这些源与您当前的 CMake 文件在同一目录中,您可以使用 CMAKE_CURRENT_SOURCE_DIR :
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Task1.cpp)
add_executable(Task1 ${CMAKE_CURRENT_SOURCE_DIR}/Task1.cpp)
endif()

if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Task2.cpp)
add_executable(Task2 ${CMAKE_CURRENT_SOURCE_DIR}/Task2.cpp)
endif()

关于git - 如何在CMake中使其可执行之前检查文件是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60414736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com