大家好,又见面了,我是你们的朋友全栈君。
1、cmkae出现"C:/Users/xxx/gcc/bin/gcc.exe"is not able to compile a simple test program.
问题
- 在camke时添加
-DCMAKE_C_COMPILER=gcc
,-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g
,-DCMAKE_MAKE_PROGRAM=make
指定gcc、g 与make
2、测试私有成员函数出现__xfer_bufptrs redeclared with different access
添加以下代码,注意==不要包含gtest/gtest.h头文件==,若多包含可能会出现struct std::__cxx11::basic_stringbuf<_CharT, _Traits, _Alloc>::__xfer_bufptrs' redeclared with different access
错误
#define private public
#define protected public
#undef private
#undef protected
为啥不能#define private public了?
3、make时,测试cpp文件出现 未定义 被测试cpp文件 的函数 undefined reference to Update(int const&)'
主要原因就是被测cpp文件是个孤立的文件;
对应在CMakeLists.txt
中即问题出在编写CMakeLists.txt
时未包含被测cpp文件或者未正确包含被测cpp文件
- 如:
set(SOURCES src/function/environment/vehicle.cpp )
路径不对导致找不到被测cpp文件
4、出现cannot find -lgtest
或 cannot find -lgtest_main
错误
找不到libgtest.a
或libgtest_main.a
造成的,检查CMakeLists.txt
中的link_directories
所包含的libgtest.a libgtest_main.a
路径是否正确
5、CMakeLists.txt
发出The maximum full path to an object file is 250 characters
警告
代码语言:javascript复制CMake Warning in CMakeLists.txt:
The object file directory C:/Users/xxx/Desktop/WR/code/xxx/test/test_xxxx.cpp/
test_xxxx/build/CMakeFiles/gtest_xxxx.dir/ has 186 characters.
The maximum full path to an object file is 250 characters (see CMAKE_OBJECT_PATH_MAX).
Object file C_/Users/xxx/Desktop/WR/code/xxx/test/test_xxx.cpp/test_xxxx/test_xxxx.cpp.obj cannot be safely placed under this directory. The build may not work correctly.
可能是由于你的名字取的太长了,导致不能完整放下,后面在make时会出现错误
代码语言:javascript复制fatal error: opening dependency file CMakeFilesgtest_xxx.dirC_UsersxxxDesktopWRcodexxxtesttest_xxx.cpptest_xxxxtest_xxxx.cpp.obj.d: No such file or directory
68 | }
| ^
compilation terminated.
我将CMakeLists.txt
中add_executable
与target_link_libraries
中的名字修改短后再进行cmake与make,能够成功编译;
6、出现multiple definition of main
错误
多次定义main函数导致的,如在CmakeLists.txt
中调用了libgtest_main.a
动态库,而在其他cpp文件中也出现了main函数,就会导致两次定义;
若想自己定义gtest的main函数,则在编写CMakeLists.tx
t时不引用libgtest_main.a
动态库;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。