Intellisense 不适用于 CMake FetchContent

Intellisense not working with CMake FetchContent

我是 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::vector 也没有着色。

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);
}

如果可能的话,我想保持简短,添加外部项目似乎又长又复杂。

这很奇怪,在我这边,vector 是由您提供的代码着色的。

因此请确保您已在 CMakeLists.txt 文件下添加 add_subdirectory ("CMakeList")。并确保您的项目没有错误。

或者你可以试试这个:

一)Extensions-->Manage Extensions 下禁用任何第三方安装的扩展.完成此操作后,您应该重新启动 VS。

二)关闭VS,删除解决方案文件夹下的.vs隐藏文件夹,还有out文件夹

然后,重启你的VS,打开你的CMake工程再次测试。

此外,如果这不起作用,请检查:

首先,从CMakeLists.txt文件中删除tests CMakeList的内容,重建cmake项目。然后,关闭VS,尝试上面第二步选项。之后,重新启动 VS,您的 cmake 项目,将 tests CMakeList 的内容重新添加到 CMakeLists.txt 文件中。