cmake: add_custom_command с зависимостью в другом каталоге - PullRequest
1 голос
/ 30 апреля 2011

Еще один вопрос add_custom_command:

У меня есть проект, в котором выходные данные одной пользовательской команды используются в качестве входных данных для другой, но в другом каталоге. Так, например:

Каталог lib/CMakeLists.txt содержит:

add_custom_command(
    OUTPUT libfoo.xx
    COMMAND <command to build libfoo.xx>
)
add_custom_target(libfoo DEPENDS libfoo.xx)

Каталог test/CMakeLists.txt содержит:

add_custom_command(OUTPUT test.yy
   COMMAND <command to build test.yy>
   DEPENDS "${PROJECT_BINARY_DIR}/lib/libfoo.xx"
)

Так что мне нужно убедиться, что libfoo собирается до test.yy. В документах говорится, что предложение DEPENDS в add_custom_command () может иметь только зависимости на уровне файлов. Давайте попробуем это и посмотрим, что произойдет:

No rule to make target 'lib/libfoo.xx', needed by 'test/test.yy'.  Stop.

Если, с другой стороны, я пытаюсь создать зависимость на целевом уровне, говоря DEPENDS libfoo, тогда ошибка изменится на:

No rule to make target 'libfoo', needed by 'test/test.yy'.  Stop.

Так что, похоже, здесь не будут работать зависимости ни на уровне файлов, ни на уровне целей. Есть ли способ, чтобы выходные данные одной пользовательской команды были входными данными для другой пользовательской команды в другом каталоге?

1 Ответ

0 голосов
/ 21 мая 2011

Вы можете попробовать в test/CMakLists.txt добавить

add_custom_target(test DEPENDS test.yy)

, а затем добавить

add_dependencies(test libfoo)

на вашем верхнем уровне CMakeLists.txt.

Отказ от ответственности: Я не проверял это, и я новичок в CMake.Скажите нам, если это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...