Вы не можете частично специализировать функцию. Если вы хотите сделать это в функции-члене, вы должны частично специализировать весь шаблон (да, это раздражает). На большом шаблоном классе, чтобы частично специализировать функцию, вам понадобится обходной путь. Возможно, будет работать шаблонная структура-член (например, template <typename U = T> struct Nested
). Или вы можете попробовать получить другой шаблон, который частично специализируется (работает, если вы используете нотацию this->member
, иначе вы столкнетесь с ошибками компилятора).
В моем случае вариант 3 оказался простым. В моем файле CMake для набора инструментов я просто добавил:
set(CMAKE_C_COMPILER_WORKS ON)
set(CMAKE_CXX_COMPILER_WORKS ON)
И теперь CMake не тратит впустую время на опросы функций моего компилятора.
Это работает в моем конкретном случае (прошивка встроенных систем), но было бы неплохо, как заставить CMake и -fstack-protector-strong
работать также и с не встроенными программами.
Сказать CMake не использовать
blockquote>-fstack-protector-strong
во время опроса компилятора?Просто добавьте этот флаг компилятора после вызова
project()
, когда CMake проверяет компилятор.project(MyProject) # ... set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-strong") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-strong")
Вместо добавления флага в переменную
CMAKE_*_FLAGS
, вы также можете добавить его с помощью командыadd_compile_options
:project(MyProject) # ... add_compile_options("-fstack-protector-strong")