2

因此,据我所知,没有另一个问题最近足以与新的主要更新兼容。
我正在使用 XCode 4 在 Mac 上编程。
我需要为 Windows 编写程序。
我将如何做到这一点,它是相同的确切代码只是编译不同?!?
任何和所有的帮助将不胜感激,我不知道我在这里做什么。

谢谢!

4

2 回答 2

0

如果您严格遵守 Mac 和 Windows 都支持的 POSIX C 子集(这隐含地限制您使用控制台应用程序),您可能会获得适用于 OS X 的 Windows 交叉编译器并以这种方式构建应用程序。

但是,如果您只是在 VM 中(或通过 Boot Camp)运行 Windows 并在 Visual Studio 或任何其他 Windows 开发环境中开发应用程序,您可能会发现您的生活大大简化了。这是制作 Windows GUI 应用程序的唯一方法,实际上也是编写 Windows 控制台应用程序的唯一好方法。

于 2013-10-01T22:03:26.843 回答
0

虽然系统非常不同,但可以编写在两者上编译的代码,而不是任何代码,您需要仔细设计它;这被称为“便携式代码”。

假设您已经编写了代码;然后您可以使用 MINGW(例如brew install mingw-w64)为 Windows 进行交叉编译,您甚至可以.exe使用 WINE 在 Mac OS X 上测试结果;clang 也可以用于为 Windows 编译,但我从未尝试过。

下面是Makefile一个真实项目的例子:

toolchain = mingw
#toolchain = wine

mingw- = i586-mingw32msvc-
mingw-cc  := ${mingw-}gcc
mingw-cxx := ${mingw-}c++
mingw-rc  := ${mingw-}windres

wine-cc  = winegcc
wine-cxx = wineg++
wine-rc  = wrc

CC  := ${${toolchain}-cc}
CXX := ${${toolchain}-cxx}
RC  := ${${toolchain}-rc}

LDFLAGS = -mwindows -mno-cygwin
LIBS = -lodbc32 -lole32 -loleaut32 -lwinspool -luuid

app-objs = app.o \
        app_resources.o \
        input.o \
        user_manual.o \
        hints.o

all: app.exe

clean:
    ${RM} ${app-objs} app.exe

app.exe: ${app-objs}
    ${CC} ${LDFLAGS} -o $@ ${app-objs} ${LIBS}

.c.o:
    ${CC} -c ${CFLAGS} -o $@ $<

.rc.o:
    ${RC} ${RCFLAGS} -o $@ $<

.SUFFIXES: .rc .res
.PHONY: all clean

顺便说一句,该示例来自最初由其他人使用 MS Visual Studio 构建的项目,几年后由我移植到 MINGW 并从 Debian GNU/Linux 交叉编译(但对于 Mac OS X 是相同的)。这只是一个例子,但大多数语言确实有某种方式来交叉编译,这或多或少是等价的。

现在,真正棘手的部分是代码库,一种在 Mac 中本地开发应用程序并让它也为 Windows 编译的方法是使用受良好支持的可移植框架,如 Qt,它保证您在许多操作系统中使用相同的 API .

尽管如此,关于目标平台的某些部分可能略有不同,可能需要更正,但往往是微小的变化。

因此,简而言之,通过使用可移植框架,只需设置现有的构建系统,无论它是什么,使用正确的交叉编译工具,提供所述框架,它都会或多或少地在相同的环境中编译方式与原生构建一样。

于 2021-10-29T19:47:10.330 回答