From 72b72367349710eb946740b4cc5ad2cf33913aac Mon Sep 17 00:00:00 2001 From: Sun Daowen Date: Wed, 29 Apr 2020 01:02:16 +0800 Subject: [PATCH] fix build error --- CMakeLists.txt | 12 ++---------- cmake/AddCompilationFlags.cmake | 12 ++++++++++++ src/CMakeLists.txt | 19 +++++++++++++++++-- 3 files changed, 31 insertions(+), 12 deletions(-) create mode 100644 cmake/AddCompilationFlags.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index da61991e..963d2714 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,16 +19,6 @@ if(MSVC_VERSION GREATER 1600 AND NOT MSVC_IDE) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE,5.01") endif() endif() -if(MSVC) - string(REPLACE "/MDd" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") - string(REPLACE "/MD" "" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}") - set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MT") - string(REPLACE "/MD" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") - string(REPLACE "/MD" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT") -endif() if(APPLE) set(CMAKE_MACOSX_RPATH 1) endif() @@ -45,9 +35,11 @@ endif() set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}") set(ROOT_SOURCE_DIR "${PROJECT_SOURCE_DIR}") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${ROOT_SOURCE_DIR}/cmake") +include(AddCompilationFlags) include(AddDep) include(AddTarget) include(AutoFiles) +ADD_COMPILATION_FLAGS() if(USE_DEP) ADD_DEP_INCLUDE_DIR("${ROOT_SOURCE_DIR}/dep") ADD_DEP_LIBRARY_DIR("${ROOT_SOURCE_DIR}/dep") diff --git a/cmake/AddCompilationFlags.cmake b/cmake/AddCompilationFlags.cmake new file mode 100644 index 00000000..3eeadbb8 --- /dev/null +++ b/cmake/AddCompilationFlags.cmake @@ -0,0 +1,12 @@ +macro(ADD_COMPILATION_FLAGS) + if(MSVC) + foreach(FLAG_VAR CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if(${FLAG_VAR}) + string(REGEX REPLACE "/MD" "/MT" ${FLAG_VAR} "${${FLAG_VAR}}") + endif() + endforeach() + endif() +endmacro() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 00f83df0..23a33253 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,13 +17,28 @@ endif() ADD_EXE(3dstool "${src}") if(WIN32) if(MSVC) - target_link_libraries(3dstool libeay32 libcurl WS2_32 Crypt32) - set_target_properties(3dstool PROPERTIES LINK_FLAGS_DEBUG "/NODEFAULTLIB:LIBCMT") + if(MSVC_VERSION LESS 1800) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4005") + endif() + target_link_libraries(3dstool libcurl libcrypto WS2_32 Wldap32 Crypt32) + set(3dstool_LINK_FLAGS_DEBUG "${3dstool_LINK_FLAGS_DEBUG} /NODEFAULTLIB:LIBCMT") + if(MSVC_VERSION GREATER 1700) + set(3dstool_LINK_FLAGS_DEBUG "${3dstool_LINK_FLAGS_DEBUG} /IGNORE:4099") + set(3dstool_LINK_FLAGS_RELWITHDEBINFO "${3dstool_LINK_FLAGS_RELWITHDEBINFO} /IGNORE:4099") + endif() + set_target_properties(3dstool PROPERTIES + LINK_FLAGS_DEBUG "${3dstool_LINK_FLAGS_DEBUG}" + LINK_FLAGS_RELWITHDEBINFO "${3dstool_LINK_FLAGS_RELWITHDEBINFO}") else() target_link_libraries(3dstool curl crypto) endif() else() target_link_libraries(3dstool curl ssl crypto) + if(APPLE) + target_link_libraries(3dstool ldap) + else() + target_link_libraries(3dstool pthread dl) + endif() if(APPLE OR CYGWIN) target_link_libraries(3dstool iconv) endif()