From b4e5decca74266ff282fd4cac7bcba0e4f53d6e8 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Tue, 1 Mar 2016 17:19:43 +0800 Subject: [PATCH] Link statically (with LTCG) on Windows --- CMakeLists.txt | 16 ++++++++++++++++ cmake/c_flag_overrides.cmake | 7 +++++++ cmake/cxx_flag_overrides.cmake | 7 +++++++ 3 files changed, 30 insertions(+) create mode 100644 cmake/c_flag_overrides.cmake create mode 100644 cmake/cxx_flag_overrides.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b49498..e373541 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,10 @@ # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# override default c/c++ flags, add /MT to link VC++ runtime statically. +set(CMAKE_USER_MAKE_RULES_OVERRIDE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/c_flag_overrides.cmake) +set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cxx_flag_overrides.cmake) + cmake_minimum_required(VERSION 3.0.0) project(chewing-editor VERSION 0.0.1) @@ -136,6 +140,18 @@ target_link_libraries(chewing-editor importer util ) +if(MSVC) + target_link_libraries(chewing-editor # append libraries + Qt5::Widgets + "${_qt5Widgets_install_prefix}/lib/qtpcre.lib" + "${_qt5Widgets_install_prefix}/lib/qtfreetype.lib" + "${_qt5Widgets_install_prefix}/lib/qtharfbuzzng.lib" + imm32.lib + winmm.lib + Ws2_32.lib + ) +endif() + qt5_use_modules(chewing-editor Widgets) install(PROGRAMS ${CMAKE_BINARY_DIR}/chewing-editor DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/cmake/c_flag_overrides.cmake b/cmake/c_flag_overrides.cmake new file mode 100644 index 0000000..adb4e5c --- /dev/null +++ b/cmake/c_flag_overrides.cmake @@ -0,0 +1,7 @@ +if(MSVC) + set(CMAKE_C_FLAGS_DEBUG_INIT "/MTd /Zi /Ob0 /Od /RTC1 /D_DEBUG") + set(CMAKE_C_FLAGS_MINSIZEREL_INIT "/MT /O1 /Ob1 /D NDEBUG") + set(CMAKE_C_FLAGS_RELEASE_INIT "/MT /O2 /Ob2 /GL /Gw /D NDEBUG") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /OPT:REF /OPT:ICF") + set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG") +endif() diff --git a/cmake/cxx_flag_overrides.cmake b/cmake/cxx_flag_overrides.cmake new file mode 100644 index 0000000..57180a3 --- /dev/null +++ b/cmake/cxx_flag_overrides.cmake @@ -0,0 +1,7 @@ +if(MSVC) + set(CMAKE_CXX_FLAGS_DEBUG_INIT "/MTd /Zi /Ob0 /Od /RTC1 /D_DEBUG") + set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/MT /O1 /Ob1 /D NDEBUG") + set(CMAKE_CXX_FLAGS_RELEASE_INIT "/MT /O2 /Ob2 /GL /Gw /D NDEBUG") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /OPT:REF /OPT:ICF") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG") +endif()