cmake add_custom_command устарел - PullRequest
       6

cmake add_custom_command устарел

2 голосов
/ 20 декабря 2011

У меня проблема в том, что add_custom_command всегда устарел и поэтому запускается при каждой сборке. Пользовательская команда запускает инструмент, который является целью того же проекта, чтобы сгенерировать файл, который используется другой целью:

add_executable(GeneratorTool main.cpp)

add_custom_command(
    OUTPUT generated.h
    COMMAND GeneratorTool
    DEPENDS main.cpp
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    COMMENT "** GeneratorTool **"
)

add_library(MyLib STATIC generated.h ...)

В выводе сборки (visual studio 2010) я всегда вижу ** GeneratorTool **. Я ожидаю, что он не будет собираться снова после того, как генерируется .h существует и новее, чем main.cpp. Есть идеи?

Спасибо, Jochen

Ответы [ 2 ]

2 голосов
/ 22 декабря 2011

Прежде всего, вы можете поставить DEPENDS на GeneratorTool в вашем add_custom_command вместо main.cpp.GeneratorTool уже зависит main.cpp.

Тогда, скорее всего, это неоднозначное расположение generated.h, которое вызывает перестроение созданного файла. H.

Убедитесь, что MyLib ищетgenerated.h в нужном месте.

Мое слепое предположение - попробовать:

add_library(MyLib STATIC ${CMAKE_CURRENT_SOURCE_DIR}/generated.h ...)
1 голос
/ 18 апреля 2018

Другое дело, что команда генерирует все OUTPUT файлы.Если ваш генератор не может сгенерировать хотя бы один из них, он будет работать каждый раз (это была моя проблема).

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