0

我尝试配置我的 CMake 项目,以便它可以接受动态源列表。但由于某种原因,我从文件函数中得到了空列表。所以我尝试以两种方式执行相同的操作:

[1] 静态列表(不需要的方式)

set(VARIANT_A "src/dir1/*.cpp src/dur2/*.cpp src/dir3/*.cpp") 
file(GLOB SRC . ${VARIANT_A})  
messages(${SRC})

在这里我得到了我需要的文件列表。

[2] 动态列表(即我想做的)

set(VARIANT_B "dir1 dir2 dir3")
string(REPLACE " " ";" DirList ${VARIANT_B})
set(Sources "")
foreach(Dir ${DirList})
    set(Sources "src/${Source}/*cpp ${Sources}")
endforeach()
message(${Sources})
file(GLOB SRC . ${Sources})
messages(${SRC})

尽管message(${Sources})打印出相同的字符串,但由于某种原因,我在这里得到了空列表${VARIANT_A}

那么我做错了什么?

4

1 回答 1

0

要创建一个列表,你这样做

set(VARIANT_A "src/dir1/*.cpp;src/dur2/*.cpp;src/dir3/*.cpp") 
list(LENGTH VARIANT_A iCount)
message( "LENGTH=${iCount}" )

CMake 教程

于 2020-08-06T02:33:13.803 回答