1
我有一個基於鋼筋的Erlang應用程序構建一個端口程序。此端口程序是特定於Linux的,因此在Mac OS上編譯失敗。不過,我希望Rebar在Mac OS上構建時跳過端口程序。我怎樣才能做到這一點?跳過某些操作系統的端口編譯?
在rebar.config
目前的規格如下所示:
{port_specs, [{"priv/my_port", ["c_src/foo.c", "c_src/bar.c"]}]}.
我有一個基於鋼筋的Erlang應用程序構建一個端口程序。此端口程序是特定於Linux的,因此在Mac OS上編譯失敗。不過,我希望Rebar在Mac OS上構建時跳過端口程序。我怎樣才能做到這一點?跳過某些操作系統的端口編譯?
在rebar.config
目前的規格如下所示:
{port_specs, [{"priv/my_port", ["c_src/foo.c", "c_src/bar.c"]}]}.
至於documented in comments in rebar_port_compiler.erl,爲port_specs
列表元素有另一種形式{ArchRegex, TargetFile, Sources}
。因此,請編寫您的鋼筋配置,如下所示:
{port_specs, [{"linux", "priv/my_port", ["c_src/foo.c", "c_src/bar.c"]}]}.
「這是什麼正則表達式匹配?」,你可能會問。它抵靠的rebar_utils:get_arch返回值,它由下列部分組成匹配,用連字符隔開:
erlang:system_info(otp_release)
返回,例如"R15B02"
erlang:system_info(system_architecture)
返回。對於類Unix系統,這是由配置腳本確定的CPU供應商 - 操作系統三元組,例如, "i386-apple-darwin10.8.0"
或"x86_64-unknown-linux-gnu"
。erlang:system_info({wordsize, external})
的返回值。os:type/0
返回的元組的第一個元素)所以最終結果將是類似"R15B01-i386-apple-darwin10.8.0-32-unix"
或"R15B02-x86_64-unknown-linux-gnu-64-unix"
。