在 linux 上开发也适用于 windows 的 C++ 应用程序
Develop c++ application on linux that also works on windows
我正在使用 Eclipse Luna 开发 C++ 应用程序。此应用程序应在 Linux 和 Windows 上 运行。由于该程序将包含 getifaddrs
等网络功能。我必须为 Windows 和 Linux 使用不同的东西(我已经在我的代码中注意了)。
问题更多了,如何为 Windows 环境编译程序?我可以在 eclipse 中设置一些首选项以在 Linux-compiling 和 windows-compiling 之间切换,还是有一个通用的交叉编译器适用于两者?
是否也可以 运行 应用程序,因为它是一个 windows 环境,可能需要 wine
来测试它?
您可以使用预处理器宏包装 OS 敏感代码,例如:
#ifdef __PREDEFINED_MACRO_FOR_OS1
// code specific for OS1
#elif __PREDEFINED_MACRO_FOR_OS2
// code specific for OS2
...
#elif _PREDEFINED_MACRO_FOR_OSN
// code specific for OSN
#else
#error "Operating System not supported."
#endif
您可以在此处找到每个 OS 的特定宏:http://sourceforge.net/p/predef/wiki/OperatingSystems/
这样,不适用于当前 OS 的代码将被忽略,只编译正确的代码。
我正在使用 Eclipse Luna 开发 C++ 应用程序。此应用程序应在 Linux 和 Windows 上 运行。由于该程序将包含 getifaddrs
等网络功能。我必须为 Windows 和 Linux 使用不同的东西(我已经在我的代码中注意了)。
问题更多了,如何为 Windows 环境编译程序?我可以在 eclipse 中设置一些首选项以在 Linux-compiling 和 windows-compiling 之间切换,还是有一个通用的交叉编译器适用于两者?
是否也可以 运行 应用程序,因为它是一个 windows 环境,可能需要 wine
来测试它?
您可以使用预处理器宏包装 OS 敏感代码,例如:
#ifdef __PREDEFINED_MACRO_FOR_OS1
// code specific for OS1
#elif __PREDEFINED_MACRO_FOR_OS2
// code specific for OS2
...
#elif _PREDEFINED_MACRO_FOR_OSN
// code specific for OSN
#else
#error "Operating System not supported."
#endif
您可以在此处找到每个 OS 的特定宏:http://sourceforge.net/p/predef/wiki/OperatingSystems/
这样,不适用于当前 OS 的代码将被忽略,只编译正确的代码。