clang: warning: аргумент, не использованный во время компиляции: '-stdlib = libc++'

Вопрос:

Я не могу найти много информации об этом. Что может заставить clang указать это предупреждение?

У меня есть dev-машина, которая запускает сценарий cmake, и все работает нормально. Тот же самый файл cmake выполняется на сервере сборки, все вышеприведенное сообщение распечатывается.

Сервер сборки работает с clang3.8, в то время как моя dev-машина работает clang4. Я не могу воспроизвести эту проблему с помощью простого решения. Например, простой main.cpp не приведет к этой ошибке:

clang++ main.cpp -std=c++14 -stdlib=libc++

отлично работает даже на строительной машине.

Любые идеи, почему это может быть напечатано?

Это флаги, использующие:

set(LIBRARY_RELEASE_OPTIONS "-Wall;-Wextra;-pedantic;-Wlong-long;-Wmissing-braces;-Wunused-function;-Wuninitialized;-Wunused-label;-Wunused-parameter;-Wdisabled-optimization;-O2;-std=c++14;")
add_library(${SHARED_LIBRARY_NAME} STATIC ${SERVER_SOURCE})
target_compile_options(${SHARED_LIBRARY_NAME} PUBLIC "$<$<CONFIG:RELEASE>:${LIBRARY_RELEASE_OPTIONS}>")

Лучший ответ:

Если вы хотите отключить предупреждение, добавьте -Wno-error=unused-command-line-argument в LIBRARY_RELEASE_OPTIONS это необходимо для подавления предупреждения ccache, distcc и т.д.

Кроме того, лучше использовать set(CMAKE_CXX_STANDARD 14) вместо добавления -std=c++14; в LIBRARY_RELEASE_OPTIONS

Ответ №1

Проблема, похоже, связана с ccache. ccache 3.3.3 работает как ожидается, а 3.2.4 на ubuntu 16 LTS, похоже, вызывает это предупреждение.

Оцените статью
TechArks.Ru
Добавить комментарий