У меня следующая проблема: я создаю SDK, используя CMake. Во время процесса сборки открытый заголовочный файл, который позже отправляется клиентам, создается с помощью custom_target. Этот заголовочный файл нужен клиентским приложениям, а также примерным приложениям, которые поставляются как часть SDK. Поэтому в моей системе сборки примеры приложений в настоящее время выражают зависимость от цели, генерирующей заголовок, так что он генерируется перед попыткой сборки примера:
set(TARGET MyExample)
set(SOURCES ${TARGET}.cpp)
add_executable(${TARGET} ${SOURCES})
add_dependencies(${TARGET} InterfaceHeaderGenerator)
# ... more code
Теперь в клиентской системе файл, сгенерированный InterfaceGenerator, конечно, уже присутствует, и поэтому эта зависимость недействительна.
Я ищу способ доставки моих файлов CMake клиенту таким образом, чтобы он мог их использовать, не поддерживая две разные копии файлов CMakeLists.txt для режимов «разработка» и «клиент».
Я знаю, что это, вероятно, можно решить с помощью выражений генератора в связи с CPack. Однако CPack я не могу использовать, потому что в нем отсутствует другая нужная мне функция: возможность доставки и установки ЖЕ цели в нескольких пакетах.
Возможно ли это вообще?