在FindXXX.cmake的XXX_INCLUDE_DIRS或XXX_LIBRARIES中指定多个路径

Jor*_*tao 3 cmake

考虑以下 a 的示例FindXXX.cmake

find_path(XXX_INCLUDE_DIR NAMES XXX/XXX.h)
find_path(XXXYYY_INCLUDE_DIR NAMES YYY.h)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(XXX DEFAULT_MSG
        XXX_INCLUDE_DIR XXXYYY_INCLUDE_DIR)

set(XXX_INCLUDE_DIRS "${XXX_INCLUDE_DIR} ${XXXYYY_INCLUDE_DIR}")
Run Code Online (Sandbox Code Playgroud)

正如本例中所示,XXX_INCLUDE_DIRS是一个中间有空格的字符串,因此,当添加到CMakeLists.txtusing中时

 target_include_directories(a PRIVATE ${XXX_INCLUDE_DIRS})
Run Code Online (Sandbox Code Playgroud)

它被编译器调用为

-I"XXXpath XXXYYYpath"
Run Code Online (Sandbox Code Playgroud)

我应该如何修改该行

set(XXX_INCLUDE_DIRS ${XXX_INCLUDE_DIR} ${XXXYYY_INCLUDE_DIR})
Run Code Online (Sandbox Code Playgroud)

它设置变量的值XXX_INCLUDE_DIRS

. 中的多个库路径也会出现同样的问题XXX_LIBRARIES

usr*_*567 5

您可以为变量提供多个条目,例如XXX_LIBRARIESXXX_INCLUDE_DIRS作为分号分隔的列表。

set(XXX_INCLUDE_DIRS "${XXX_INCLUDE_DIR};${XXXYYY_INCLUDE_DIR}")
Run Code Online (Sandbox Code Playgroud)