背景介紹:我們已經有一套代碼在windows和android上編譯通過了,目前需要將這些代碼在MacOS和Linux上編成動態鏈接庫,所以直接使用android的編譯宏,少量修改即可正常編譯。這里只是介紹如何使用CLion進行跨平台編譯。
1.使用CLion的Import Project from Sources進行代碼導入
2.只需要勾選源文件即可
導入后
3.修改CMakeLists.txt
1)設定編譯宏,通過add_definitions(-D宏定義)的方式,開啟SQLITE3_EXPORTS、SQLITE_ENABLE_COLUMN_METADATA、SQLITE_ENABLE_RTREE宏
2)設定變量,通過set(變量名 變量值)的方式,定義通用變量
3)不同平台加以區分
4)設定引用頭文件目錄
5)設定引用庫文件目錄
6)設定編譯結果,add_executable則會編譯成可執行文件,add_library則會編譯成鏈接庫,通過SHAED關鍵字聲明為動態鏈接庫(windows下為dll文件,MacOS下為dylib文件,Linux下為so文件),通過STATIC關鍵字聲明為靜態鏈接庫(windows下為lib文件,MacOS和Linux下為a文件)
7)重命名編譯結果,由於上一步設定了兩個編譯成果,一個是靜態鏈接庫,一個是動態鏈接庫,編譯成果是mzsqlite_shared.dylib和mzsqlite_static.a,不是想要的結果,需要將成果重命名成mzsqlite.dylib和mzsqlite.a
8)聲明需要鏈接的庫,sqlite沒有依賴庫,這里貼的是另外一個庫的配置
9)重定位編譯成果位置,目前沒有找到好的方法進行重新位,只是通過CLion->Preferences設置將編譯成果保存到源代碼所在目錄下
10)SQLite編譯CMakeLists.txt全貌
4.編譯成果
1)設置編譯條件,通過Run->Edit Configurations進行設置,可以設置編譯目標、Release或是Debug等
2)編譯,通過Run->Build進行編譯,在輸出區進行錯誤、警告定位和處理
3)查看編譯成果
5.在Linux上編譯,基本上是將MacOS上配置好的拷到Linux上打開編譯即可