Как правильно использовать стандарт c 17 с cmake в Visual Studio

#c #visual-studio #cmake #visual-studio-2022

#c #visual-studio #cmake #visual-studio-2022

Вопрос:

Я не так давно перешел из проекта Visual Studio в CMake, но у меня есть одна проблема. У меня есть куча ошибок только IntelliSense (сборка работает нормально), которые частично вызваны неактивированным стандартом c 17 и частично не распознающими элементами структур, которые есть в коде.

Cmakelist верхнего уровня:

 cmake_minimum_required (VERSION 3.8)

set (CMAKE_CXX_STANDARD 17)
project ("VulkanCMake")

add_subdirectory ("VulkanCMake")
 

Проект один:

 cmake_minimum_required (VERSION 3.10)

find_package(glfw3)
find_package(Vulkan)

include_directories("vcpkg includes")
include_directories("Vulkan include dirs")


add_executable (VulkanCMake "VulkanCMake.cpp" "VulkanCMake.h")

target_link_libraries(VulkanCMake Vulkan::Vulkan)
target_link_libraries(VulkanCMake glfw)

target_compile_features(VulkanCMake PUBLIC cxx_std_17)
 

Комментарии:

1. Я сомневаюсь, что Intellisense подберет это из CMakeCache.txt . Или — я не думаю, что cmake создаст sln со стандартом C , указанным в параметрах Intellisense. Возможно, вам придется сделать это вручную.

2. О, хорошо, я попробую это

3. Ни один из этих include_directories вызовов не делает ничего полезного вообще. И в любом случае вам следует избегать вызова этой функции.

4. Обновите cmake и используйте современный стиль CMake. Это CMake 20-летней давности. Задайте свойства для целевых объектов, а не как глобальные переменные. Если вы можете применить современные методы CMake — поищите их в Google, посмотрите несколько выступлений на YouTube и примените их к своему проекту. Это слишком большая тема для обсуждения в комментарии, и вы можете этого не захотеть, поэтому я остановлюсь прямо здесь.

5. Я рекомендую использовать Premake ( premake.github.io ). Это НАМНОГО лучше!