Utilities/Release: Build static executables on Windows

Switch to the MSVC static runtime library (and static UCRT).
Link Qt statically, including the Windows platform plugin.
Disable the Qt tests because they are incompatible with a
Qt using a static runtime library.
This commit is contained in:
Brad King
2017-11-13 14:09:57 -05:00
parent a12830c2fd
commit 313a565729
2 changed files with 36 additions and 13 deletions

View File

@@ -1,13 +1,20 @@
set(CMAKE_RELEASE_DIRECTORY "c:/msys64/home/dashboard/CMakeReleaseDirectory") set(CMAKE_RELEASE_DIRECTORY "c:/msys64/home/dashboard/CMakeReleaseDirectory32")
set(CONFIGURE_WITH_CMAKE TRUE) set(CONFIGURE_WITH_CMAKE TRUE)
set(CMAKE_CONFIGURE_PATH "c:/Program\\ Files/CMake/bin/cmake.exe") set(CMAKE_CONFIGURE_PATH "c:/Program\\ Files/CMake/bin/cmake.exe")
set(PROCESSORS 8) set(PROCESSORS 16)
set(HOST dash3win7) set(HOST win32)
set(RUN_LAUNCHER ~/rel/run) set(RUN_LAUNCHER ~/rel/run)
set(CPACK_BINARY_GENERATORS "WIX ZIP") set(CPACK_BINARY_GENERATORS "WIX ZIP")
set(CPACK_SOURCE_GENERATORS "ZIP") set(CPACK_SOURCE_GENERATORS "ZIP")
set(MAKE_PROGRAM "ninja") set(MAKE_PROGRAM "ninja")
set(MAKE "${MAKE_PROGRAM} -j8") set(MAKE "${MAKE_PROGRAM} -j16")
set(qt_prefix "c:/Qt/5.6.3/msvc2017-32-xp-mt")
set(qt_win_libs
${qt_prefix}/plugins/platforms/qwindows.lib
${qt_prefix}/lib/Qt5PlatformSupport.lib
${qt_prefix}/lib/qtfreetype.lib
imm32.lib
)
set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release
CMAKE_DOC_DIR:STRING=doc/cmake CMAKE_DOC_DIR:STRING=doc/cmake
CMAKE_USE_OPENSSL:BOOL=OFF CMAKE_USE_OPENSSL:BOOL=OFF
@@ -16,17 +23,22 @@ CMAKE_Fortran_COMPILER:FILEPATH=FALSE
CMAKE_GENERATOR:INTERNAL=Ninja CMAKE_GENERATOR:INTERNAL=Ninja
BUILD_QtDialog:BOOL:=TRUE BUILD_QtDialog:BOOL:=TRUE
CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3
CMake_INSTALL_DEPENDENCIES:BOOL=ON CMAKE_C_FLAGS_RELEASE:STRING=-MT -O2 -Ob2 -DNDEBUG
CMAKE_CXX_FLAGS_RELEASE:STRING=-MT -O2 -Ob2 -DNDEBUG
CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x86 -subsystem:console,5.01 CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x86 -subsystem:console,5.01
CMake_QT_STATIC_QWindowsIntegrationPlugin_LIBRARIES:STRING=${qt_win_libs}
CMAKE_PREFIX_PATH:STRING=${qt_prefix}
CMake_TEST_Qt4:BOOL=OFF
CMake_TEST_Qt5:BOOL=OFF
") ")
set(ppflags "-D_WIN32_WINNT=0x501 -DNTDDI_VERSION=0x05010000 -D_USING_V110_SDK71_") set(ppflags "-D_WIN32_WINNT=0x501 -DNTDDI_VERSION=0x05010000 -D_USING_V110_SDK71_")
set(CFLAGS "${ppflags}") set(CFLAGS "${ppflags}")
set(CXXFLAGS "${ppflags}") set(CXXFLAGS "${ppflags}")
set(ENV ". ~/rel/env") set(ENV ". ~/rel/env32")
get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH)
set(GIT_EXTRA "git config core.autocrlf true") set(GIT_EXTRA "git config core.autocrlf true")
if(CMAKE_CREATE_VERSION STREQUAL "nightly") if(CMAKE_CREATE_VERSION STREQUAL "nightly")
# Some tests fail spuriously too often. # Some tests fail spuriously too often.
set(EXTRA_CTEST_ARGS "-E 'Qt5Autogen|ConsoleBuf'") set(EXTRA_CTEST_ARGS "-E 'ConsoleBuf'")
endif() endif()
include(${path}/release_cmake.cmake) include(${path}/release_cmake.cmake)

View File

@@ -1,14 +1,20 @@
set(CMAKE_RELEASE_DIRECTORY "c:/msys64/home/dashboard/CMakeReleaseDirectory64") set(CMAKE_RELEASE_DIRECTORY "c:/msys64/home/dashboard/CMakeReleaseDirectory64")
set(CONFIGURE_WITH_CMAKE TRUE) set(CONFIGURE_WITH_CMAKE TRUE)
set(CMAKE_CONFIGURE_PATH "c:/Program\\ Files/CMake/bin/cmake.exe") set(CMAKE_CONFIGURE_PATH "c:/Program\\ Files/CMake/bin/cmake.exe")
set(PROCESSORS 8) set(PROCESSORS 16)
set(HOST dash3win7) set(HOST win64)
set(SCRIPT_NAME dash3win7x64)
set(RUN_LAUNCHER ~/rel/run) set(RUN_LAUNCHER ~/rel/run)
set(CPACK_BINARY_GENERATORS "WIX ZIP") set(CPACK_BINARY_GENERATORS "WIX ZIP")
set(CPACK_SOURCE_GENERATORS "") set(CPACK_SOURCE_GENERATORS "")
set(MAKE_PROGRAM "ninja") set(MAKE_PROGRAM "ninja")
set(MAKE "${MAKE_PROGRAM} -j8") set(MAKE "${MAKE_PROGRAM} -j16")
set(qt_prefix "c:/Qt/5.6.3/msvc2017-64-xp-mt")
set(qt_win_libs
${qt_prefix}/plugins/platforms/qwindows.lib
${qt_prefix}/lib/Qt5PlatformSupport.lib
${qt_prefix}/lib/qtfreetype.lib
imm32.lib
)
set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release
CMAKE_DOC_DIR:STRING=doc/cmake CMAKE_DOC_DIR:STRING=doc/cmake
CMAKE_USE_OPENSSL:BOOL=OFF CMAKE_USE_OPENSSL:BOOL=OFF
@@ -17,8 +23,13 @@ CMAKE_Fortran_COMPILER:FILEPATH=FALSE
CMAKE_GENERATOR:INTERNAL=Ninja CMAKE_GENERATOR:INTERNAL=Ninja
BUILD_QtDialog:BOOL:=TRUE BUILD_QtDialog:BOOL:=TRUE
CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3
CMake_INSTALL_DEPENDENCIES:BOOL=ON CMAKE_C_FLAGS_RELEASE:STRING=-MT -O2 -Ob2 -DNDEBUG
CMAKE_CXX_FLAGS_RELEASE:STRING=-MT -O2 -Ob2 -DNDEBUG
CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x64 -subsystem:console,5.02 CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x64 -subsystem:console,5.02
CMake_QT_STATIC_QWindowsIntegrationPlugin_LIBRARIES:STRING=${qt_win_libs}
CMAKE_PREFIX_PATH:STRING=${qt_prefix}
CMake_TEST_Qt4:BOOL=OFF
CMake_TEST_Qt5:BOOL=OFF
") ")
set(ppflags "-D_WIN32_WINNT=0x502 -DNTDDI_VERSION=0x05020000 -D_USING_V110_SDK71_") set(ppflags "-D_WIN32_WINNT=0x502 -DNTDDI_VERSION=0x05020000 -D_USING_V110_SDK71_")
set(CFLAGS "${ppflags}") set(CFLAGS "${ppflags}")
@@ -28,6 +39,6 @@ get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH)
set(GIT_EXTRA "git config core.autocrlf true") set(GIT_EXTRA "git config core.autocrlf true")
if(CMAKE_CREATE_VERSION STREQUAL "nightly") if(CMAKE_CREATE_VERSION STREQUAL "nightly")
# Some tests fail spuriously too often. # Some tests fail spuriously too often.
set(EXTRA_CTEST_ARGS "-E 'Qt5Autogen|ConsoleBuf'") set(EXTRA_CTEST_ARGS "-E 'ConsoleBuf'")
endif() endif()
include(${path}/release_cmake.cmake) include(${path}/release_cmake.cmake)