我正在为我的工作开发一个简单的c ++应用程序,它需要在Windows和Linux上运行。在Windows上运行时,它应该显示一个简单的GUI,当在Linux上运行时,它应该使用文本UI(因为Linux计算机根本不使用任何GUI)。
我想知道我是否可以使用Qt来编写应用程序(因为它的跨平台)并使用" #ifndef WIN32"
将打印输出上的GUI用法替换为STDOUT任何其他建议将不胜感激。该程序从xml文件中读取一些属性,并根据这些属性(访问套接字,环境变量等)运行一些测试。我的目标是为每个平台编写一个静态编译的单个项目(以获得一个不可靠的可执行文件),并避免创建不同的项目。
谢谢。
答案 0 :(得分:2)
这当然是可能的,但尽量避免使用#ifdef
。
一种方法是隔离非GUI类中的所有核心功能(数据处理,网络等...)。然后你编写两组用于表示的类:一组基于QWidget
s,另一组基于文本输入/输出。
要进行整理,请使用#ifdef
中的main()
来选择要使用的“演示”类(并在非{GUI QCoreApplication
和QApplication
之间切换用于GUI)。
不要将#ifdef
基于WIN32
,请使用自定义变量。这样,您就可以在您更熟悉的环境中运行和测试两个版本。