如何在列表中使用通用路径添加所有文件名? [英] How to prepend all filenames on the list with common path?
问题描述
如何自动为列表中的所有文件名添加通用路径前缀?例如,在CMakeLists.txt中具有文件列表:
How can I prepend all filenames on the list with a common path prefix automatically? For instance having a list of files in CMakeLists.txt:
SET(SRC_FILES foo1.cpp foo2.cpp)
我想获得一个与此列表等效的列表:
I'd like to get a list that is equivalent to this:
${CMAKE_CURRENT_SOURCE_DIR}/foo1.cpp ${CMAKE_CURRENT_SOURCE_DIR}/foo2.cpp
我需要它在PARENT_SCOPE上下文中使用文件名,例如
I need this to use filenames in a PARENT_SCOPE context, e.g.
SET(FILES_TO_TRANSLATE ${FILES_TO_TRANSLATE} ${SRC_FILES} PARENT_SCOPE)
因此,另一个目录中的CMakeFiles.txt仍然可以找到这些文件文件。
so, that a CMakeFiles.txt in another directory can still find these files.
本质上,我希望这样的东西(伪代码):
In essence, I'd expect something like this (pseudo-code):
SET(FILES_TO_TRANSLATE PREPEND_ALL_NAMES(${CMAKE_CURRENT_SOURCE_DIR} ${SRC_FILES}) PARENT_SCOPE)
这是否容易实现,还是我必须使用 foreach循环来创建新的文件列表?
Is this is easily doable, or do I have to user "foreach" loop to create new list of files?
推荐答案
CMake 3.12添加了列表转换前者-这些变压器之一是 PREPEND
。因此,以下内容可以内联用于在列表中添加所有条目:
CMake 3.12 added list transformers - one of these transformers is PREPEND
. Thus, the following can be used inline to prepend all entries in a list:
列表(TRANSFORM FILES_TO_TRANSLATE PREPEND $ {CMAKE_CURRENT_SOURCE_DIR})
...其中 FILES_TO_TRANSLATE
是列表的变量名。
...where FILES_TO_TRANSLATE
is the variable name of the list.
更多信息,请参见 CMake文档。
这篇关于如何在列表中使用通用路径添加所有文件名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!