如何在列表中使用通用路径添加所有文件名? [英] How to prepend all filenames on the list with common path?

查看:78
本文介绍了如何在列表中使用通用路径添加所有文件名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何自动为列表中的所有文件名添加通用路径前缀?例如,在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆