如何使用 cmake 在 Windows 系统上编译可以 运行 的应用程序
how to compile an app that can be run on Windows system using cmake
我使用 cmake 帮助在 Windows 8.1 x64 系统上使用 MinGW32 编译应用程序。
目标是使应用程序可以 运行 在 windows 从 Windows XP 到 Windows 10。
使用动静结合编译,因为有些dll找不到静态库。
一些主要代码
SET(toolchain_lib "E:/mingw32/lib" "E:/mingw32/lib/gcc/mingw32/5.3.0")
LINK_DIRECTORIES(${toolchain_lib})
target_link_libraries(${TARGET_NAME}
libgdi32.a
libglu32.a
#freeglut.dll
freeglut.a
libglew32.a
#libglew32.dll.a
opengl32.lib
libstdc++.a
libgcc.a
)
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ /SUBSYSTEM:WINDOWS,5.1")
FILE (GLOB SRC_LIST "${src}/*.cpp" "${inc}/*.h")
ADD_EXECUTABLE(${TARGET_NAME} ${SRC_LIST})
cmake 响应:
[100%] Linking CXX executable ..\bin\sample_cube_picturebox_t.exe
g++.exe: error: /SUBSYSTEM:WINDOWS,5.1: No such file or directory
CMakeFiles\sample_cube_picturebox_t.dir\build.make:200: recipe for target '../bin/sample_cube_picturebox_t.exe' failed
make.exe[2]: *** [../bin/sample_cube_picturebox_t.exe] Error 1
CMakeFiles\Makefile2:81: recipe for target 'CMakeFiles/sample_cube_picturebox_t.dir/all' failed
make.exe[1]: *** [CMakeFiles/sample_cube_picturebox_t.dir/all] Error 2
Makefile:89: recipe for target 'all' failed
bin\make.exe: *** [all] Error 2
/SUBSYSTEM:WINDOWS,5.1
不是 GCC 标志。
您可能想使用某些行 -D_WIN32_WINNT=0x0501
来指定 Windows XP 兼容性(参见:https://docs.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt?view=msvc-160)
我使用 cmake 帮助在 Windows 8.1 x64 系统上使用 MinGW32 编译应用程序。
目标是使应用程序可以 运行 在 windows 从 Windows XP 到 Windows 10。
使用动静结合编译,因为有些dll找不到静态库。
一些主要代码
SET(toolchain_lib "E:/mingw32/lib" "E:/mingw32/lib/gcc/mingw32/5.3.0")
LINK_DIRECTORIES(${toolchain_lib})
target_link_libraries(${TARGET_NAME}
libgdi32.a
libglu32.a
#freeglut.dll
freeglut.a
libglew32.a
#libglew32.dll.a
opengl32.lib
libstdc++.a
libgcc.a
)
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ /SUBSYSTEM:WINDOWS,5.1")
FILE (GLOB SRC_LIST "${src}/*.cpp" "${inc}/*.h")
ADD_EXECUTABLE(${TARGET_NAME} ${SRC_LIST})
cmake 响应:
[100%] Linking CXX executable ..\bin\sample_cube_picturebox_t.exe
g++.exe: error: /SUBSYSTEM:WINDOWS,5.1: No such file or directory
CMakeFiles\sample_cube_picturebox_t.dir\build.make:200: recipe for target '../bin/sample_cube_picturebox_t.exe' failed
make.exe[2]: *** [../bin/sample_cube_picturebox_t.exe] Error 1
CMakeFiles\Makefile2:81: recipe for target 'CMakeFiles/sample_cube_picturebox_t.dir/all' failed
make.exe[1]: *** [CMakeFiles/sample_cube_picturebox_t.dir/all] Error 2
Makefile:89: recipe for target 'all' failed
bin\make.exe: *** [all] Error 2
/SUBSYSTEM:WINDOWS,5.1
不是 GCC 标志。
您可能想使用某些行 -D_WIN32_WINNT=0x0501
来指定 Windows XP 兼容性(参见:https://docs.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt?view=msvc-160)