【问题标题】:Is it possible to create a Windows exe on Linux using C++ with CMake?是否可以使用 C++ 和 CMake 在 Linux 上创建 Windows exe?
【发布时间】:2016-01-16 02:33:32
【问题描述】:

我目前正在家里的 Windows PC 上编写代码,我通过 SSH 连接在 Linux PC 上编译该代码。但由于生成的程序创建了一个 GUI,我无法真正测试它。除了 Linux 程序之外,是否可以创建一个可以在我的家用计算机上运行的 Windows exe? 这是我的 CMakeLists(使用 QT5):

cmake_minimum_required(VERSION 2.8.11)
project(p3)

set(CMAKE_PREFIX_PATH $ENV{QT5_QMAKE_DIR})
MESSAGE(STATUS "QT5_QMAKE_DIR: " ${CMAKE_PREFIX_PATH})

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_VERBOSE_MAKEFILE on)
set(CMAKE_AUTOMOC ON)

# Possibly set this to DEBUG for testing
set(CMAKE_BUILD_TYPE Release)

include_directories(${CMAKE_CURRENT_BINARY_DIR})
#project source directories

find_package(Qt5Widgets REQUIRED)
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)

find_package(OpenMP)
if (OPENMP_FOUND)
   message("OPENMP FOUND")
   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
   set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()

include_directories(
  ${Qt5Widgets_INCLUDE_DIRS}
  ${Qt5Core_INCLUDE_DIRS}
  ${Qt5Gui_INCLUDE_DIRS}
)

add_definitions(${Qt5Widgets_DEFINITIONS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")

if(UNIX)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()

add_executable(p3
   #.cpps and .hs
)

set_property(TARGET p3 PROPERTY CXX_STANDARD 11)
target_link_libraries(p3 ${Qt5Widgets_LIBRARIES})

【问题讨论】:

  • 这是一个解决在 Linux 上为 Windows 编译的问题;接受的答案使用mingw,它不直接解决cmake,但看看:stackoverflow.com/questions/2033997/…
  • Alexander 建议使用 X11 转发是我用来在 Windows 上显示 Linux GUI 的方法,只是我使用 Putty and Xming 而不是 MobaXterm。我可以下载试试看。
  • 我用过Putty和Xming有一段时间了。这是一段艰难的时期:)。说真的,设置起来有点困难。
  • 我已经在使用 Putty,所以今天晚些时候我会试一试。感谢您的快速回答:)

标签: c++ linux cmake cross-compiling


【解决方案1】:

您可以为此使用 Linux 托管的 MinGW,但您必须自己构建 Qt。这是一个复杂的过程,并非所有 Linux 应用程序都能在 Windows 上完美运行。

也许,您可以将 SSH X11 forwarding 与支持 X11 的 Windows 托管 SSH 客户端(例如 MobaXterm)一起使用,以从服务器获取应用程序窗口?

【讨论】:

  • 是的,我会尝试第二个。谢谢:)
  • 请随意点击左侧的复选框以接受此答案;)
猜你喜欢
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
相关资源
最近更新 更多