如何在CMakeLists中动态构建文件路径字符串



给定一个文件路径engine/*,如何将每个文件名附加到allheader.h中,使其看起来像这样:

#include engine/foo.h
#include engine/faa.h
#include engine/engine.h
etc.

我当前的CMakeList尝试是这样的,但这会导致#include文件(RELATIVE_PATH(

foreach(file ${ENGINE})
file(APPEND allheader.h " #include ")
file(APPEND allheader.h file(RELATIVE_PATH))
endforeach()

不能在函数内部调用函数,即foo(... bar(...))不起作用,因此首先计算局部";PATH";然后使用它。

我会试试:

foreach(FILE ${ENGINE})
file(RELATIVE_PATH PATH ${CMAKE_CURRENT_SOURCE_DIR} ${FILE})
file(APPEND allheader.h "#include "${PATH}"")
endforeach()

参考:https://cmake.org/cmake/help/latest/command/file.html#relative-路径

最新更新