использование cmake target_compile_features с биокодом

Я пытаюсь использовать target_compile_feature в моем блоке биокодов.
Насколько я знаю, в настоящее время это лучший способ запросить у cmake конкретную стандартную версию c ++, так как он будет знать, какие (если таковые имеются) флаги добавить в компиляцию, и потерпит неудачу с ошибкой, если используемый компилятор не поддерживать функции, которые мы просили.

Я добавил эту строку в мой очень простой CMakeLists.txt (без изменений по сравнению с примером повышения в блоге biicode):

target_compile_features(${BII_BLOCK_TARGET} PRIVATE cxx_auto_type)

При запуске bii build меня приветствует эта ошибка:

CMake Error at     bii_test/alchemist/blocks/sennin/deckbox_loader/CMakeLists.txt:13 (target_compile_features):
target_compile_features may only be set INTERFACE properties on INTERFACE
targets

Установка cxx_auto_type в области PUBLIC или PRIVATE дает точно такой же результат.

Я хочу избежать использования CXX_STANDARD и CXX_STANDARD_REQUIRED, потому что первый является мягким запросом (если запрошенный стандарт не поддерживается, cmake все еще позволит нам попытаться построить код), а второй заставляет требовать полной поддержки для всего запрошенного стандартного стандарта (и в в случае с Visual Studio произойдет сбой, поскольку такого флага нет).

1

Решение

Я ничего не знаю о би, но, вероятно, BII_BLOCK_TARGET это что-то дает? И вы должны использовать его с target_link_libraries или что-то?

В любом случае, попробуйте INTERFACE ключевое слово.

target_compile_features(${BII_BLOCK_TARGET} INTERFACE cxx_auto_type)

http://www.cmake.org/cmake/help/v3.2/manual/cmake-compile-features.7.html

http://www.cmake.org/cmake/help/v3.2/manual/cmake-buildsystem.7.html#transitive-usage-requirements

1

Другие решения


По вопросам рекламы [email protected]