#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 ). Это НАМНОГО лучше!