【发布时间】:2022-01-03 00:56:54
【问题描述】:
我尝试在 windows 下构建一个简单的 cmake 应用程序。该应用程序依赖于 gtest,它是通过 conan 安装的。项目的基本设置如下:
conanfile.txt
[requires]
gtest/1.11.0
[generators]
cmake_find_package
cmake_paths
cmake
CMakeLists.txt
project(conan-myapp)
cmake_minimum_required(VERSION 3.1)
include(${CMAKE_BINARY_DIR}/conan_paths.cmake)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)
find_package(GTest REQUIRED)
enable_testing()
include_directories(${GTest_INCLUDE_DIR})
add_executable(myapp "main.cpp")
target_link_libraries(myapp GTest::gtest_main GTest::gtest )
add_test(myapp bin/myapp)
main.cpp
#include <gtest/gtest.h>
TEST(mytest, testit) {
EXPECT_TRUE(false);
}
我使用以下命令来构建应用程序:
mkdir build
cd build
conan install ..
cmake ..
cmake --build .
但我收到以下错误消息
gtest.lib(gtest-all.obj):错误 LNK2038:检测到不匹配 '_ITERATOR_DEBUG_LEVEL':值 '0' 与 main.obj 中的值 '2' 不匹配 [T:\project\build\cocpp19.vcxproj]
gtest.lib(gtest-all.obj):错误 LNK2038:检测到“RuntimeLibrary”不匹配:值 'MD_DynamicRelease' 与 main.obj 中的值 'MDd_DynamicDebug' 不匹配 [T:\project\build\cocpp19.vcxproj]
gtest_main.lib(gtest_main.obj):错误 LNK2038:检测到“_ITERATOR_DEBUG_LEVEL”不匹配:值“0”与 main.obj 中的值“2”不匹配 [T:\project\build\cocpp19.vcxproj]
gtest_main.lib(gtest_main.obj):错误 LNK2038:检测到“RuntimeLibrary”不匹配:> 值 'MD_DynamicRelease' 与 main.obj 中的值 'MDd_DynamicDebug' 不匹配 [T:\project\build\cocpp19.vcxproj]
LINK : 警告 LNK4098: defaultlib 'MSVCRT' 与使用其他库冲突;使用 /NODEFAULTLIB:library [T:\project\build\cocpp19.vcxproj]
【问题讨论】: