【问题标题】:What is the difference between ${CMAKE_CURRENT_LIST_DIR} and . (relative directory)?${CMAKE_CURRENT_LIST_DIR} 和 . (相对目录)?
【发布时间】:2021-10-25 03:45:13
【问题描述】:

我了解${CMAKE_CURRENT_LIST_DIR}${CMAKE_CURRENT_SOURCE_DIR}之间的区别,但我不明白前者和简单的.之间有什么区别?

例如,有没有什么场景

target_include_directories(foo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})

行为会不同于

target_include_directories(imgwarp PRIVATE .)

?

【问题讨论】:

  • 一些 CMake 命令接受(并正确工作)相对路径。但几乎所有命令都适用于绝对路径。根据文档,命令include_directories 接受相对路径并相对于当前源目录解释它们。所以对于那个命令${CMAKE_CURRENT_SOURCE_DIR} 相当于简单的点.。至于target_include_directories,它只允许INSTALL_INTERFACE的相对路径。

标签: c++ cmake


【解决方案1】:

简单反例: add_custom_command 允许您指定自定义 WORKING_DIRECTORY。将相对文件名传递给这样的命令将是相对于工作目录的。使用CMAKE_CURRENT_SOURCE_DIR 明确地使它们绝对化可以解决这个问题。

【讨论】:

    猜你喜欢
    • 2013-03-17
    • 2011-12-11
    • 2016-11-02
    • 2012-04-09
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    相关资源
    最近更新 更多