有条件地编译到Win32 GUI或Linux控制台应用程序

时间:2013-03-08 00:19:59

标签: c++ linux conditional-compilation win32gui

我的任务是编写一个有条件地编译到Windows下的Win32 GUI应用程序或Linux下的控制台应用程序的应用程序。

到目前为止,我最大的绊脚石只是弄清楚如何设置这个项目。我通常在Visual Studio 2012中工作,当创建新的C ++ Win32项目时,可以选择控制台应用程序和GUI应用程序。我觉得这是设置一些项目属性和与编译器相关的东西,这将使得在Linux下编译同一个项目变得困难,并让它生成一个控制台应用程序。

条件编译的东西我并不十分关心,我只想弄清楚我是否应该通过Windows上的命令行而不是使用Visual Studio来编译这些东西,以及我将如何设置目标应用程序在执行此操作时最终作为GUI或控制台应用程序。

希望我已经清楚地解释了自己,我认为很明显我很丢失。提前感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

这似乎是通过创建包含大量功能的库,然后向该库提供两到三个前端以将其功能公开为控制台应用程序或GUI程序来更好地服务的情况之一。

尝试将一堆Win32 GUI内容压缩到一个控制台应用程序项目中是没有意义的。

答案 1 :(得分:0)

我建议使用跨平台工具包,例如wxWidgets或Qt。这样您就不会受某个特定平台架构的束缚。这些框架还有关于如何使用各种编译器/开发环境正确设置项目的大量文档。

答案 2 :(得分:0)

至少在Windows端,您可以使用项目的预处理器定义来定义它们。在这里讨论!

C++ compiling on Windows and Linux: ifdef switch

并将代码部分设置为:

#ifdef WIN32   // Windows system specific
#include <windows.h>
#else          // Unix based system specific
#include <sys/time.h>
#endif

继续以这种方式分离所有跨平台代码。别忘了在属性 - &gt;下将WIN32添加到项目属性中。配置属性 - &gt; C / C ++ - &gt;预处理器