Как установить функции компиляции в файле cmake toolchain для известного пользовательского компилятора для использования target_compile_features - PullRequest
2 голосов
/ 28 октября 2019

У меня есть минимальный Привет, мир Пример:

#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 для собственного компилятора? Заранее спасибо!

1 Ответ

0 голосов
/ 28 октября 2019
set_property(TARGET 01-1-hello-world PROPERTY CXX_STANDARD 17)

CXX_STANDARD

...