是否可以使用C ++和CMake在Linux上创建Windows exe?

时间:2016-01-16 02:33:32

标签: c++ linux cmake cross-compiling

我目前在家用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})

1 个答案:

答案 0 :(得分:1)

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

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