从 linux 到 Windows 交叉编译 SDL2 不会生成 exe

时间:2021-05-01 02:38:14

标签: c++ linux windows cmake sdl-2

我正在使用运行 Ubuntu 的 WSL,并试图让 SDL2 程序使用 Ubuntu 进行编译,然后在 Windows 上运行该程序。我已经能够构建它,但是它不会生成 exe(并且将文件扩展名更改为 exe 并不能修复它)。此外,即使我将 CMAKE_CXX_FLAGS 设置为 -o Crawl_The_Dungeon.exe,该文件仍然最终被命名为全小写,如项目名称。当我还有一台 linux 机器时,我能够让它在 linux 上编译和运行。

我对 CMake 还是很陌生,所以我不完全理解我是否接近或根本不接近。

SET(CMAKE_SYSTEM_NAME Windows)

set(CMAKE_CXX_STANDARD 14)            # Enable c++14 standard
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${crawl_the_dungeon_SOURCE_DIR}/CMakePath")

set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)

set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)

set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
project(crawl_the_dungeon)
set(SOURCE_FILES final.cpp Soldier.cpp TilesEnum.cpp)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --static -std=c++0x")

add_executable(${PROJECT_NAME} ${SOURCE_FILES})

find_package(SDL2 REQUIRED)
find_package(SDL2_image REQUIRED)

include_directories(${SDL2_INCLUDE_DIR}
                    ${SDL2_IMAGE_INCLUDE_DIR}
                    ${SDL2_TTF_INCLUDE_DIR})
target_link_libraries(crawl_the_dungeon ${SDL2_LIBRARY}
                             ${SDL2_IMAGE_LIBRARIES}
                             ${SDL2_TTF_LIBRARIES}
                             )

set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc")


编辑:我愚蠢地包含 -o Crawl_The_Dungeon.exe,因为它现在创建了一个 exe。但是它说我打开它时无法运行该程序。

0 个答案:

没有答案