Глобальные файлы в пользовательской команде post build в CMake

Я генерирую привязки C # из кода C ++, используя CMake и SWIG. Вот часть CMakeLists.txt это вызывает SWIG, а также делает то, что я хочу сделать, но неавтоматическим способом:

...

find_package(SWIG REQUIRED)
include(${SWIG_USE_FILE})

set(CMAKE_SWIG_FLAGS "")

set_source_files_properties(matrixsharp.i PROPERTIES CPLUSPLUS ON)

include_directories("../include/")

set(SOURCE_FILES
lmfont.cpp
lmsize.cpp
lmpoint.cpp
lmpanel.cpp)

swig_add_module(matrixsharp csharp matrixsharp.i ${SOURCE_FILES})

swig_link_libraries(matrixsharp matrix
...) # Library dependencies

# TODO Don't add the cs files manually but instead try to glob these during the post-build stage and then pass onto the mcs command
set(CSHARP_TEST_APP_SRC
${CMAKE_CURRENT_SOURCE_DIR}/TestApp.cs
${CMAKE_CURRENT_BINARY_DIR}/LmFont.cs
${CMAKE_CURRENT_BINARY_DIR}/LmSize.cs
${CMAKE_CURRENT_BINARY_DIR}/LmPoint.cs
${CMAKE_CURRENT_BINARY_DIR}/LmMatrixProtocol.cs
${CMAKE_CURRENT_BINARY_DIR}/LmPanelType.cs
${CMAKE_CURRENT_BINARY_DIR}/LmPanel.cs
${CMAKE_CURRENT_BINARY_DIR}/SWIGTYPE_p_unsigned_char.cs
${CMAKE_CURRENT_BINARY_DIR}/MatrixSharpPINVOKE.cs
)

add_custom_command(TARGET matrixsharp
POST_BUILD
COMMAND mcs ${CSHARP_TEST_APP_SRC}
-out:Test.exe
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Building C# Test.exe")

В процессе сборки все необходимое *.cs файлы генерируются и помещаются в двоичный каталог. Так как Test.exe требует всех файлов C # было бы гораздо проще, если бы я мог как-то вызвать glob на этапе после сборки (но до указанной выше пользовательской команды) сохраните выходные данные в переменной, а затем передайте их пользовательской команде, которая вызывает mcs (Моно-компилятор) для создания окончательного исполняемого файла Test.exe,

Есть способ сделать это? Я думал о добавлении другой пользовательской команды перед этой, которая использует ls а также grep чтобы получить все *.cs файлы из выходного двоичного каталога, но проблема в том, что я не знаю, как сохранить возвращенную строку в переменной. Часть SWIG — это просто пример, характерный для моего случая, но этот вопрос носит более общий характер.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]