Я моделирую зависимости с помощью target_link_libraries
, как это сделано в этом сообщении в блоге.
target_link_libraries(Foo
LibraryA
LibraryB
)
Это прекрасно работает, но по разным причинам мне нужно использовать add_custom_target
для предварительной обработки файла с помощью специальной команды. Проблема в том, что эта пользовательская цель зависит от включений LibraryA и LibraryB. Я действительно надеялся сделать следующее, например, как target_link_libraries
работает (см. Бит LibraryA и LibraryB):
add_custom_target(Bar ALL
COMMAND ${CMAKE_C_COMPILER} thing.cpp LibraryA LibraryB /P
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/Path/Here
COMMENT "Preprocessing to a file"
VERBATIM
)
Однако это не работает. LibraryA и LibraryB вставляются, как они появляются. Даже если бы это сработало, я думаю, что я бы получил больше, чем включает, так как я думаю, что цели включают в себя и библиотеку. Может быть, это не очень хороший подход.
Итак, что я могу сделать здесь? Как я могу извлечь каталоги включения из каждой цели для использования в пользовательской команде? Я обнаружил, что если я find_package(Foo REQUIRED)
получаю доступ к Foo_DIR
, но это указывает на каталог сборки, а не на исходный каталог, где находятся включения.