使用xmake編譯工程

weixin_33843409發表於2016-01-01

如果你只想編譯當前主機環境的平臺,例如在windows上編譯windows版本,在macosx上編譯macosx版本,那麼你只需要敲以下命令即可:

xmake

因為xmake預設會去檢測當前的環境,預設編譯當前主機的平臺版本,不需要做額外的配置,並且預設編譯的是release版本。

如果工程裡面有多個目標,那麼上面的命令,會去編譯所有目標,如果只想編譯指定一個目標,例如:test,那麼只需執行:

xmake test

如果你想編譯debug版本,那麼需要做些簡單的配置:

xmake config --mode=debug
xmake

xmake針對每個命令和引數,都提供了簡寫版本:

xmake f -m debug
xmake

注:為了提高靈活性,release版本和debug版本的編譯選項設定,需要自己在工程描述檔案中描述,如果沒有設定的話,release和debug版本生成的程式是一樣的。

如果你想強制重新構建所有,可以執行:

xmake -r
xmake --rebuild

如果要指定編譯具體某個架構,可以這麼進行編譯:

xmake f -a armv7
xmake

一般情況下,如果沒有指定架構,預設會去使用指定平臺的預設架構,例如:macosx下預設是x86_64,iphoneos下士armv7

如果想要指定編譯其他平臺,例如在macosx上編譯iphoneos的版本,那麼:

xmake f -p iphoneos
xmake

編譯android版本:

xmake f -p android --ndk=xxxx
xmake

雖然配置完後,每次編譯不需要重新配置,但是如果切換編譯目標平臺到ios、linux,那麼之前ndk的設定就被清除了,下次得重新配置。

如果想要更加方便的不同平臺間來回切換編譯,可以將ndk設定到全域性配置中,例如:

-- 將ndk設定到全域性配置中
xmake g --ndk=xxx

-- 切換到android編譯平臺,不需要每次都設定ndk了
xmake f -p android
xmake -r

-- 切換到ios編譯平臺
xmake f -p iphoneos
xmake -r

編譯windows版本,很簡單,只要你機子裝了vs,xmake會去自動檢測,不需要做額外的配置,只需要開啟cmd,進入你的工程目錄,
然後執行xmake就行了。

使用其他交叉工具鏈進行編譯:

xmake f -p android -a armv7-a --cross=arm-linux-androideabi- --toolchains=/xxxx/bin
xmake

預設在編譯配置的時候,會去快取上一次的配置,這樣每次配置只需要修改部分引數就行了,不需要每次全部重新配置

如果你想重新配置所有,清楚原有的快取,可以加上--clean引數:

xmake f -c
xmake f --clean
xmake

xmake在配置的時候,會去檢測工程依賴的一些介面和連結庫,如果你想要看具體詳細的配置檢測資訊,可以加上--verbose引數,回顯配置資訊

xmake f -c -v
xmake f --clean --verbose
xmake

xmake還支援在編譯的時候,手動設定一些編譯選項和工具,具體引數列表如下:

--cc=CC                            The C Compiler
--cxx=CXX                          The C++ Compiler
--cflags=CFLAGS                    The C Compiler Flags
--cxflags=CXFLAGS                  The C/C++ compiler Flags
--cxxflags=CXXFLAGS                The C++ Compiler Flags
                                           
--as=AS                            The Assembler
--asflags=ASFLAGS                  The Assembler Flags
                                           
--ld=LD                            The Linker
--ldflags=LDFLAGS                  The Binary Linker Flags
                                           
--ar=AR                            The Static Library Linker
--arflags=ARFLAGS                  The Static Library Linker Flags
                                           
--sh=SH                            The Shared Library Linker
--shflags=SHFLAGS                  The Shared Library Linker Flags
                                           
--mm=MM                            The Objc Compiler
--mxx=MXX                          The Objc++ Compiler
--mflags=MFLAGS                    The Objc Compiler Flags
--mxflags=MXFLAGS                  The Objc/c++ Compiler Flags
--mxxflags=MXXFLAGS                The Objc++ Compiler Flags

相關文章