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
文件中。
我是 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
文件中。