У меня есть минимальный Привет, мир Пример:
#include <cstdlib>
#include <iostream>
#include <string_view>
int main(int /*argc*/, char* /*argv*/ [])
{
using namespace std;
string_view output_phrase("hello world");
cout << output_phrase << endl;
bool is_good = cout.good();
int result = is_good ? EXIT_SUCCESS : EXIT_FAILURE;
return result;
}
Поэтому я создаю минимальный CMakeLists.txt файл:
cmake_minimum_required(VERSION 3.14)
project(01-1-hello-world CXX)
add_executable(01-1-hello-world main.cxx)
target_compile_features(01-1-hello-world PUBLIC cxx_std_17)
СейчасЕсли я использую известный для CMake компилятор, все работает как положено (например, MSVC, clang ++, g ++). Но если я попробую какой-нибудь пользовательский компилятор (на основе clang) из некоторого SDK с файлом набора инструментов cmake скажет:
Ошибка CMake на CMakeLists.txt: 5(target_compile_features): target_compile_features Функция компилятора "cxx_std_17" неизвестна компилятору CXX
"Clang"
Поэтому я пытаюсь установить CMAKE_CXX_COMPILE_FEATURES
вмой файл набора инструментов
set(CMAKE_CXX_COMPILE_FEATURES cxx_std_17) # we know custom-clang have c++17 support
Также я пытаюсь установить CMAKE_CXX_KNOWN_FEATURES
, но ничего не меняется. Как заставить target_compile_features(01-1-hello-world PUBLIC cxx_std_17)
работать в файле toolchain для cmake для собственного компилятора? Заранее спасибо!