我正在为Symbian应用程序开发Qt。我必须使用某些平台特定的API,这些API仅在某些S60版本上可用。例如:为Symbian编译多平台Qt应用程序
-S60第三版FP1库: S60_common_lib,S60_3rd_ed_lib
-S60第三版FP2库: S60_common_lib,S60_3rd_ed_lib,Symbian_common_lib
-S60第五版库: S60_common_lib ,S60_5th_ed_lib,Symbian_common_lib
-Symbian^3 libs: S60_5th_ed_lib,Symbian3_lib,Sy mbian_common_lib
如您所见,某些库在多个平台之间共享。目前,我必须多次编译整个项目才能为所有不同的S60平台获得单独的.exe,资源等。我通过在pro文件中为每个平台定义一个标识符来做到这一点。例如:
# symbian 3
DEFINES += symbian_3_build
symbian:LIBS += # ...
# S60 3.1
# DEFINES += s60_fp1
# LIBS...
而在实际的代码我有类似:
#ifdef symbian_3_build
#include <some_s3_header.h>
#elseif s60_fp1
#include <some_fp1_header.h>
#endif
所以我的问题是:
这是编译多平台的Qt适用于Symbian应用程序的唯一途径(例如有什么办法让它只用一个exe工作)?
我正在使用Qt创建者。在编译一个平台之后,我会在编译到下一个平台(重建overwirites旧文件)之前从epoc文件夹复制资源文件(.exe,.rsc,_reg.rsc)。在将所有版本编译并收集到特定位置后,我将创建一个创建单个sis文件,该文件将安装基于该平台的不同版本。这个过程非常容易出错。有没有更好的方法来做到这一点?
谢谢。
感谢您的回复。我一直在看RLibrary,它似乎对我自己的DLL很有用。但是,我正在使用的API可以是一个特定于平台的私有API。在这种情况下,我无法确定DLL的结构或对.def文件有任何访问权限。 – Routa 2010-11-25 07:09:45