Intellisense не работает с CMake fetchContent

#c #visual-studio #cmake #intellisense

Вопрос:

Я новичок в CMake и играю с «современным подходом CMake». Краткий обзор структуры проекта:

   project folder
    - CMakeList
      src
        - CMakeList
        - lib.cpp
      tests
        - CMakeList
        - test.cpp
 

У меня есть два вопроса, которые я хотел бы затронуть. Главное-заставить Intellisense отображать опцию кода и раскрашивать текст внутри test.cpp.

список моих тестов CMakeList

 # CMakeList for the tests folder

include(FetchContent)
FetchContent_Declare(
  googletest
  GIT_REPOSITORY https://github.com/google/googletest.git
)
FetchContent_MakeAvailable(googletest)

# this helps remove the MSVCRTD warning
add_definitions(-DNODEFAULTLIB:MSVCRTD)

# this helps remove a bunch of static vs dynamic erros
set(CMAKE_CXX_FLAGS_DEBUG "/MTd")

add_executable(set1_solu_tests tests.cpp)
target_link_libraries(set1_solu_tests GTest::gtest GTest::gtest_main set1_solu_lib)
add_test(NAME TwoSumTests COMMAND set1_solu_tests)
 

Все компилируется и может запускаться, однако Intellisense работает не только в test.cpp. Даже вектор std::не раскрашен.

код в тесте Google не раскрашен:

 TEST(TwoSum, set1)
{
    int t = 17;
    std::vector<int> nums{ 2, 3, 4, 5, 7, 9, 11, 12, 17, 16, 20, 10 };
    auto result = twoSum(nums, t);

    std::vector<int> a{ 4, 11 };
    std::vector<int> b{ 11, 4 };
    EXPECT_TRUE(result == a || result == b);
}
 

Я хотел бы по возможности сократить его и добавить внешний проект, который кажется очень длинным и сложным.

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

1. Можете ли вы добавить скриншот, где он не раскрашен. Непонятно, что именно вы имеете в виду.

2. imgur.com/gallery/Qo5Hk04 авто и int раскрашены, но векторная или любая другая автоматическая заливка не работает.

3. до сих пор не ясно, в чем проблема на изображении. кроме того, в файле CMakeSettings.json есть параметры для указания операции intellisense docs.microsoft.com/en-us/cpp/build/…

Ответ №1:

Это довольно странно и, на мой взгляд, vector окрашено вашим предоставленным кодом.

введите описание изображения здесь

Поэтому, пожалуйста, убедитесь, что вы добавили add_subdirectory ("CMakeList") в разделе CMakeLists.txt файл. И убедитесь, что в вашем проекте нет ошибок.

Или вы могли бы попробовать это:

Один) отключите любые сторонние установленные расширения в разделе Расширения—>>Управление расширениями. Когда вы закончите это, вам следует перезапустить VS.

Два) закройте VS, удалите .vs скрытую папку под папкой решения, а также out папку.

Затем перезапустите VS, откройте проект CMake для повторного тестирования.

Кроме того, если это не сработает, пожалуйста, проверьте это:

Во-первых, удалите содержимое вашего tests CMakeList CMakeLists.txt файла из, восстановите проект cmake. Затем закройте VS, попробуйте выполнить описанный выше вариант второго шага. После этого перезапустите VS, ваш проект cmake, повторно добавьте содержимое вашего tests CMakeList файла в CMakeLists.txt файл.

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

1. Спасибо вам за ваш ответ. В итоге я обновил свои расширения, а затем воссоздал свой CMakeList.txt по одной строчке за раз и в конце концов заставил ее снова работать.