Makefile 获取CMAKE中CMAKE\u CURRENT\u SOURCE\u DIR上方的目录

Makefile 获取CMAKE中CMAKE\u CURRENT\u SOURCE\u DIR上方的目录,makefile,cmake,Makefile,Cmake,CMAKE\u CURRENT\u SOURCE\u DIR返回当前处理的CMakeLists.txt所在的目录。该路径是来自根目录的完整路径 例如,我们如何访问CMAKE\u CURRENT\u SOURCE\u DIR上方的目录 例如,如果CMAKE\u CURRENT\u SOURCE\u DIR=/Users/saurabhshri/Documents/GitHub/repo/src/ 我想要路径/Users/saurabhshri/Documents/GitHub/repo/ 当然,做

CMAKE\u CURRENT\u SOURCE\u DIR
返回当前处理的CMakeLists.txt所在的目录。该路径是来自根目录的完整路径

例如,我们如何访问
CMAKE\u CURRENT\u SOURCE\u DIR
上方的目录

例如,如果
CMAKE\u CURRENT\u SOURCE\u DIR=/Users/saurabhshri/Documents/GitHub/repo/src/

我想要路径
/Users/saurabhshri/Documents/GitHub/repo/

当然,做
。/${PROJECT\u SOURCE\u DIR}
会得到
。///Users/saurabhshri/Documents/GitHub/repo/src/


我查看了CMake()的“位置”文档,没有找到任何内容。

我使用
get\u filename\u component
完成了它

get_filename_component(DIR_ONE_ABOVE ../ ABSOLUTE)
message(STATUS ${DIR_ONE_ABOVE})
完整的文档:


多亏了来自cmake IRC频道的ngladitz。

在cmake 3.20及更高版本中,您可以使用命令获取父路径,该命令取代了
get\u filename\u组件
命令:

cmake_path(GET <path-var> PARENT_PATH <out-var>)
cmake_path(GET CMAKE_CURRENT_SOURCE_DIR PARENT_PATH MY_PARENT_DIR)