VS2008專案移植到Linux

2021-06-28 01:48:46 字數 2726 閱讀 5531

不少人都遇到過這種情況:在windows下用visual studio工具開發的程式需要移植到linux系統中,做成linux版本的,但程式比較大,在linux上又離不開make,手動編寫makefile檔案的工作量又太大.在這裡提供一種方法僅供參考.

由於vs的解決方案檔案「*.sln」和專案檔案「*.vcproj」檔案中儲存了源**的依賴關係和編譯資訊,只要把它轉換成makefile檔案就行了,剩下的就是修改api函式和相關的標頭檔案等保證相容性的工作了.幸好老外的大牛們提供了乙個工具sln2mak,就解決了由sln生成makefile的煩惱.

這個站點提供程式源**和執行檔案,比較人性化.這裡簡單介紹一下程式的使用.其實都是從上面網頁中翻譯來的.

sln2mak可以把vs2005或者vs2008的解決方案sln檔案解析成makefile檔案,那麼這樣就可以將vs的專案遷移到linux中(當然,i/o函式等要變成相應的名字).

1.1 如果工程名和解決方案名相同

sln2mak [solution_fullpath_file_name].sln
例如:

sln2mak c:/myprojects/test/unit_test.sln
1.2 如果工程名不同於解決方案名

sln2mak -l [main_project_name] [solution_fullpath_file_name].sln
例如:

sln2mak -l unit_test c:/myprojects/test/test.sln

1.3 如果你想轉換一系列.vcproj檔案,第乙個是主工程,後面跟著剩下的工程,然後使用 -d新增額外的依賴,像lib(如果存在)

sln2mak [leading_project_fullpath_name].vcproj [project_fullpath_name_2].vcproj ... 

[project_fullpath_name_n].vcproj -d [lib_name_1] ... [lib_name_n]

例如:

sln2mak c:/myprojects/tets/unit_test.vcproj c:/myprojects/tets/test_lib.vcproj 

-d mystaticlib1 mystaticlib2 mystaticlib3

程式執行後,會發現在.vcproj的資料夾裡有乙個和這個工程名字相同的.mak檔案..mak檔案包含全部額外的libraries,sources和flags為編譯,連線,預處理和目標路徑.在.sln路徑,會發現用於處理全部目標規則(clean,make)和依賴的makefile檔案.

拿到單位乙份project,為vs2008上開發的,工程名為tfmobileauth,上司要求將其移植到linux下.此為背景.本人操作步驟如下:

將其放在tfmobileauth工程的解決方案sln同級目錄下

3.2 使用sln2mak生成makefile

由於我的poroject正符合sln2mak使用的第一種情況,工程名和解決方案名相同,都是tfmobileauth(即有tfmobileauth.sln也有tfmobileauth目錄下tfmobileauth. vcproj),所以我現在開始-->執行-->cmd,按照第一種情況執行

用我的vs2008開啟此工程,發現需要轉化,這工程應該是vs2005下的工程.

編譯該project,生成解決方案出錯

展開工程中的」引用」

也能看到原來」 microsoft.visualstudio.vcprojectengine」不正確.按照上文交代,我們將其刪除,重新新增9.0.0.0版本的microsoft.visualstudio.vcprojectengine.

重新編譯生成解決方案

我們編譯出的sln2mak.exe就放在bin/debug目錄下

3.4 使用sln2mak生成makefile

將上文編譯出來的sln2mak.exe拷貝到tfmobileauth工程的解決方案sln同級目錄下.重新執行步驟2,結果如下

工程檔案中看到

VS2008專案移植到Linux

用vs2008編寫和除錯linux程式 visualgdb 使用教程 點選開啟鏈結 vscode ubuntu下vsc編譯執行c 程式 點選開啟鏈結 在ubuntu中安裝visual studio code 點選開啟鏈結 ubuntu下的vscode 點選開啟鏈結 技巧 ubuntu中安裝visua...

VS2008專案設定選項

configuration properties general output directory output debug 表示生成檔案的輸出路徑 general intermediate directory wsiucsparser win32 debug表示生成的中間路徑 debugging ...

從VS2008專案轉為VS2005專案

vs2005轉vs2008 用文字編輯器開啟sln檔案 microsoft visual studio solution file format version 10.00 visual studio 2008 將以上內容修改後成為以下內容 microsoft visual studio solut...