2013-11-11 5 views
0

Моя программа генерирует код C++, который необходимо скомпилировать в динамическую библиотеку. Код генерируется в некотором каталоге, имя которого неизвестно до создания Makefile (каталоги создаются во время выполнения), но имена файлов, на которые зависит библиотека, предопределены (src1.cpp, src2.cpp ..). Есть ли способ создать Makefile с помощью cmake, чтобы его можно было скопировать в каталог с источниками библиотеки, которые необходимо скомпилировать. Я пытался добавить_библиотеку, которая зависит от src1.cpp src2.cpp .., но cmake не хочет генерировать Makefile без наличия источников.cmake: pregenerate Makefile для несуществующих источников

ответ

3

Я не уверен, что полностью понимаю ваш случай использования, но я думаю, что вы, вероятно, можете установить свойство GENERATED на TRUE для каждого несуществующего файла, чтобы исправить это. например что ваш список файлов MyFiles, вы можете использовать set_source_files_properties:

set_source_files_properties(${MyFiles} PROPERTIES GENERATED TRUE) 

Вы также, возможно, придется создавать зависимости, чтобы гарантировать эти файлы на самом деле существуют, прежде чем сделать попытки построить библиотеку (например, если они генерируются скриптом , сценарий вызывается как команда предварительной сборки библиотеки, используя add_custom_command(TARGET MyLib PRE_BUILD ...)).

Смежные вопросы