[英]LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in main.obj
[英]'MT_StaticRelease' not match 'MD_DynamicRelease' using cmake vcpkg
我在 Windows 10 上遇到了 Cmake 的问题。我正在使用带有 vcpkg 的 cmake 来构建一个链接到 Boost 线程的应用程序(实际上,我在 Ubuntu 上开发了它,我现在正在尝试为 Windows 构建它。)
我收到的问题是:
boost_thread-vc140-mt.lib (thread.obj):错误 LNK2038:检测到“RuntimeLibrary”不匹配:值“MT_StaticRelease”与 mtconnect_get_data.obj 中的值“MDd_DynamicDebug”不匹配
这是我的 Cmake 文件:
# CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(mtconnect)
set(FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR "C:/Program Files/MySQL/Connector C++ 8.0")
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/jdbc)
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/jdbc/cppconn)
link_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/lib64/vs14)
set(Boost_INCLUDE_DIR ${_VCPKG_INSTALLED_DIR}/x64-windows-static/include)
find_package(Boost REQUIRED COMPONENTS thread)
include_directories(include ${Boost_INCLUDE_DIRS})
find_package(CURL CONFIG REQUIRED)
include_directories(${CURL_INCLUDE_DIRS})
set(FULL_PATH_TO_LIBCONFIG_DIR my_libconfig_path)
include_directories(${FULL_PATH_TO_LIBCONFIG_DIR}/include)
link_directories(${FULL_PATH_TO_LIBCONFIG_DIR}/lib)
find_library(LIBCONFIGPP_LOCATION libconfig++)
set(FULL_PATH_TO_PTHREAD_DIR my_pthread_path )
include_directories(${FULL_PATH_TO_PTHREAD_DIR}/include)
link_directories(${FULL_PATH_TO_PTHREAD_DIR}/lib/x64)
include_directories(include)
set(Boost_NO_SYSTEM_PATHS true)
set (Boost_USE_STATIC_LIBS OFF CACHE BOOL "use static libraries from Boost")
set (Boost_USE_MULTITHREADED ON)
if (WIN32)
add_definitions( -DBOOST_ALL_NO_LIB )
add_definitions( -DBOOST_ALL_DYN_LINK )
endif()
add_executable(mtconnect_create_data src/mtconnect_create_data.cpp)
add_executable(mtconnect_get_data src/mtconnect_get_data.cpp include/AsioTelnetClient.cpp)
target_link_libraries(mtconnect_create_data ${CURL_LIBRARY} ${Boost_LIBRARIES})
target_link_libraries(mtconnect_get_data ${CURL_LIBRARY} ${Boost_LIBRARIES}
mysqlcppconn ${LIBCONFIGPP_LOCATION} pthread)
...在我看来可以通过添加来解决
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
就在add_executable 行之前并仅构建发布
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.