我正在爲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