首页 > 解决方案 > 如何设置相对于 CMakeList.txt 中上层子目录的相对路径?

问题描述

我正在修改 CMakeLists.txt 以编译具有依赖项的库。我很困惑如何提供到上面子目录中位置的相对路径CMAKE_CURRENT_LIST_DIR。通常,我会使用CMAKE_CURRENT_LIST_DIR创建相对路径,或使用绝对路径。后者在这里不是一个选择。

这是我的情况:

使用 CMakeLists.txt,它目前无法通过以下方式找到其他库(此处FIRST、、、SECONDTHIRD

find_package(FIRST REQUIRED)
find_package(SECOND REQUIRED)

所以,我想通过以下方式设置 include/lib 路径:

FIRST_INCLUDE_DIR=
FIRST_LIBRARY=
SECOND_INCLUDE_DIR=
SECOND_LIBRARY=

目前,对于当前正在处理的listfile的完整目录,如下

message("${CMAKE_CURRENT_LIST_DIR}")

输出

/home/travis/build/repohandle/libraryname/00_pkg_src/libraryname/src/package

但是, 和 的位置FIRSTSECOND这里:

/home/travis/build/repohandle/libraryname/00_pkg_src/libraryname/src/first
/home/travis/build/repohandle/libraryname/00_pkg_src/libraryname/src/second

我如何链接到/src/first/src/second使用相对路径?

就像是:

FIRST_INCLUDE_DIR="${SOME_LOCATION}/src/first/include"
FIRST_LIBRARY="${SOME_LOCATION}/src/first/"
SECOND_INCLUDE_DIR="${SOME_LOCATION}/src/second/include"
SECOND_LIBRARY="${SOME_LOCATION}/src/second/include"

标签: c++cmakerelative-path

解决方案


推荐阅读