Попытка вывести список файлов в подкаталоге с помощью CMakeC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Попытка вывести список файлов в подкаталоге с помощью CMake

Сообщение Anonymous »

Я пытаюсь составить список файлов в подкаталоге по определенному шаблону с помощью CMake...

Код: Выделить всё

function(ListFilesInSubmodule directory_path pattern)
if(DEFINED WIN32)
execute_process(COMMAND powershell -c 'Get-ChildItem -Path "${directory_path}" -Recurse -Filter "${pattern}" -File | ForEach-Object { Write-Host $_.FullName }'
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE _Files
OUTPUT_STRIP_TRAILING_WHITESPACE
)
else()
execute_process(COMMAND bash -c "find '${directory_path}' -type f -name '${pattern}'"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE _Files
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()

if(NOT _Files)
message(STATUS "No files found matching pattern '${pattern}' in '${directory_path}'.")
else()
string(REPLACE "\n" ";" _FilesList ${_Files})
foreach(_file IN LISTS _FilesList)
if(EXISTS "${CMAKE_SOURCE_DIR}/${_file}")
set(PLUGIN_STRUCTURES
${PLUGIN_STRUCTURES}
"${_file}"
PARENT_SCOPE
)
message(STATUS "File is found '${_file}'.")
else()
message(WARNING "File is possibly not found '${_file}'.")
endif()
endforeach()
endif()
endfunction()
я пробовал такую ​​функцию

Код: Выделить всё

ListFilesInSubmodule("libs/subhook" "*.c")
ListFilesInSubmodule("libs/subhook" "*.h")

message(STATUS "PLUGIN_STRUCTURES : ${PLUGIN_STRUCTURES}")
и это почти работает, но в качестве целевой переменной установлено имя последнего файла, но не для всех, как ожидалось.
Я пытался установить отдельный переменная типа

Код: Выделить всё

    else()
string(REPLACE "\n" ";" _FilesList ${_Files})
foreach(_file IN LISTS _FilesList)
if(EXISTS "${CMAKE_SOURCE_DIR}/${_file}")
set(_Temp ${_Temp} "${_file}")
message(STATUS "File is found '${_file}'.")
else()
message(WARNING "File is possibly not found '${_file}'.")
endif()
endforeach()
endif()
set(PLUGIN_STRUCTURES
${_Temp}
PARENT_SCOPE
)
но и это не сработало...

Подробнее здесь: https://stackoverflow.com/questions/787 ... sing-cmake
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»