我正在开发一个Symbian的Qt应用程序。我必须使用某些特定于平台的API,这些API仅在某些S60版本上可用。例如:
-S60第3版FP1库:S60_common_lib,S60_3rd_ed_lib
-S60第3版FP2库:S60_common_lib,S60_3rd_ed_lib,Symbian_common_lib
-S60第5版库:S60_common_lib,S60_5th_ed_lib,Symbian_common_lib
-Symbian^3库:S60_5th_ed_lib,Symbian3_lib,Symbian_common_lib
正如您所看到的,某些库在多个平台之间共享。目前,我必须多次编译整个项目,以便为所有不同的S60平台获取单独的.exe、资源等文件。我通过在pro文件中为每个平台定义标识符来完成这个过程。例如:
我的问题如下:
-S60第3版FP1库:S60_common_lib,S60_3rd_ed_lib
-S60第3版FP2库:S60_common_lib,S60_3rd_ed_lib,Symbian_common_lib
-S60第5版库:S60_common_lib,S60_5th_ed_lib,Symbian_common_lib
-Symbian^3库:S60_5th_ed_lib,Symbian3_lib,Symbian_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
我的问题如下:
这是编译适用于Symbian的多平台Qt应用程序的唯一方法吗?(例如,是否有任何办法只使用一个exe就能使其工作)?
我正在使用Qt Creator。在为一个平台编译后,我将资源文件(.exe、.rsc、_reg.rsc)从epoc文件夹复制到下一个平台编译之前(重新构建会覆盖旧文件)。在收集所有版本并放置到特定位置之后,我将创建一个单独的sis文件,根据平台安装不同的版本。这个过程非常容易出错。有没有更好的方法来做这件事呢?