Sunday, June 1, 2025

【Visual Studio】是否可以將不同的平台的輸出放在同一個專案內

因需求需要同時產出 Windows 的動態函式庫 .DLL 檔,並用同樣的 Code 產生 Android 的 .so 檔,為了降低專案數量與其他同伴的建置難度,思考是否能不同平台的輸出,放在同一個專案(Project)內,並採用切換 Plateform 的方式進行專案的建置?

 

ChatGPT 和 Claud 的回答

首先問了 ChatGPT 和 Claud,它們的回答是肯定的,表示可以,並給了範例。然而,根據它們所提供的範例和步驟,反覆地確認與實驗,發現怎麼實作都不成功。在撞牆兩天後,果斷放棄,決定改用分專案的方式進行,順便再看看是否有相關文件提到。

 

MSDN

因為 AI 給的方法一直無法成功,乾脆直接去 MSDN 查 .vscproj 的 XML 屬性設定,想說自己從官方文件從頭刻看看 XML。沒想到在 .vcxproj XML 內的 Globals PropertyGroup elemet 內,有明確提到

Globals contains project level settings such as ProjectGuid, RootNamespace, and ApplicationType or ApplicationTypeRevision. The last two often define the target OS. A project can only target a single OS because currently, references and project items can't have conditions. These properties are typically not overridden elsewhere in the project file. This group isn't configuration-dependent, and typically only one Globals group exists in the project file.

意即,單一的專案內,只能設定單一個作業系統(Operation System, OS)環境。所以,想要在單一個 Visual Studio 專案內設定跨作業系統的設定,看來是不可能了。

 

可能解

如果仍然想將檔案放在同一個專案內,折衷的做法則是透過 makefile 的方式進行。在系統建置好編譯環境後,透過 makefile 進行編譯,確認編譯正確後,進入 Visual Studio,將 Configuration Type 設定成 Makefile 即可。使用者本身需要熟悉 Makefile ,也因此採取 Makefile 的做法可以考慮將整個編譯環境透過 Makefile 即可。

 

AI 的錯誤回答

在這過程中,ChatGPT 和 Claud 信誓旦旦地表示方法可行,並提出各種範例與程式碼,但在逐一實驗後,確認 AI 的回答是完全錯誤的。這不免讓人擔心,有些高階主管,或是一些大企業,將使用 AI 使用視為一種絕對相信的狀況。以這個案例來講,只能莞爾一笑。

 

No comments:

Post a Comment

熱門文章