2017-09-19 1 views
2

私は_oasisファイルにいくつかのフラグ(S、インライン20、nodynlink)を追加したいと思いますが、私はコンパイルエラーを取得:オアシスにOCAMLOPTFLAGSを追加するには?

AlphaFeatures: ocamlbuild_more_args 
XOCamlbuildExtraArgs: "-cflags '-S -inline 20'" 

私はどのようにこれらを追加することができ疑問に思って。

かなり長いエラー:

node:dir user$ make 
ocaml setup.ml -build 
/Users/user/.opam/system/bin/ocamlbuild: unknown option '-inline'. 
Usage /Users/user/.opam/system/bin/ocamlbuild [options] <target> 
    -version     Display the version 
    --version     same as -version 
    -vnum      Display the version number 
    --vnum      same as -vnum 
    -quiet      Make as quiet as possible 
    -verbose <level>   Set the verbosity level on a scale from 0 to 8 (included) 
    -documentation    Show rules and flags 
    -log <file>     Set log file 
    -no-log      No log file 
    -clean      Remove build directory and other files, then exit 
    -r       Traverse directories by default (true: traverse) 
    -I <path>     Add to include directories 
    -Is <path,...>    (same as above, but accepts a (comma or blank)-separated list) 
    -X <path>     Directory to ignore 
    -Xs <path,...>    (idem) 
    -lib <flag>     Link to this ocaml library 
    -libs <flag,...>   (idem) 
    -mod <module>    Link to this ocaml module 
    -mods <module,...>   (idem) 
    -pkg <package>    Link to this ocaml findlib package 
    -pkgs <package,...>   (idem) 
    -package <package>   (idem) 
    -syntax <syntax>   Specify syntax using ocamlfind 
    -lflag <flag>    Add to ocamlc link flags 
    -lflags <flag,...>   (idem) 
    -cflag <flag>    Add to ocamlc compile flags 
    -cflags <flag,...>   (idem) 
    -docflag <flag>    Add to ocamldoc flags 
    -docflags <flag,...>  (idem) 
    -yaccflag <flag>   Add to ocamlyacc flags 
    -yaccflags <flag,...>  (idem) 
    -lexflag <flag>    Add to ocamllex flags 
    -lexflags <flag,...>  (idem) 
    -ppflag <flag>    Add to ocaml preprocessing flags 
    -pp <flag,...>    (idem) 
    -tag <tag>     Add to default tags 
    -tags <tag,...>    (idem) 
    -plugin-tag <tag>   Use this tag when compiling the myocamlbuild.ml plugin 
    -plugin-tags <tag,...>  (idem) 
    -tag-line <tag>    Use this line of tags (as in _tags) 
    -show-tags <path>   Show tags that applies on that pathname 
    -ignore <module,...>  Don't try to build these modules 
    -no-links     Don't make links of produced final targets 
    -no-skip     Don't skip modules that are requested by ocamldep but cannot be built 
    -no-hygiene     Don't apply sanity-check rules 
    -no-plugin     Don't build myocamlbuild.ml 
    -no-stdlib     Don't ignore stdlib modules 
    -dont-catch-errors   Don't catch and display exceptions (useful to display the call stack) 
    -just-plugin    Just build myocamlbuild.ml 
    -byte-plugin    Don't use a native plugin but bytecode 
    -plugin-option    Use the option only when plugin is run 
    -sanitization-script  Change the file name for the generated sanitization script 
    -no-sanitize    Do not generate sanitization script 
    -nothing-should-be-rebuilt Fail if something needs to be rebuilt 
    -classic-display   Display executed commands the old-fashioned way 
    -use-menhir     Use menhir instead of ocamlyacc 
    -use-jocaml     Use jocaml compilers instead of ocaml ones 
    -use-ocamlfind    Use the 'ocamlfind' wrapper instead of using Findlib directly to determine command-line arguments. Use -no-ocamlfind to disable. Implies -plugin-use-ocamlfind. 
    -no-ocamlfind    Don't use ocamlfind. Implies -plugin-no-ocamlfind. 
    -plugin-use-ocamlfind  Use the 'ocamlfind' wrapper for building myocamlbuild.ml 
    -plugin-no-ocamlfind  Don't use ocamlfind for building myocamlbuild.ml 
    -toolchain <toolchain>  Set the Findlib toolchain to use. The default toolchain is always used for building myocamlbuild.ml. 
    -j <N>      Allow N jobs at once (0 for unlimited) 
    -build-dir <path>   Set build directory (implies no-links) 
    -install-lib-dir <path>  Set the install library directory 
    -install-bin-dir <path>  Set the install binary directory 
    -where      Display the install library directory 
    -which <command>   Display path to the tool command 
    -ocamlc <command>   Set the OCaml bytecode compiler 
    -plugin-ocamlc <command> Set the OCaml bytecode compiler used when building myocamlbuild.ml (only) 
    -ocamlopt <command>   Set the OCaml native compiler 
    -plugin-ocamlopt <command> Set the OCaml native compiler used when building myocamlbuild.ml (only) 
    -ocamldep <command>   Set the OCaml dependency tool 
    -ocamldoc <command>   Set the OCaml documentation generator 
    -ocamlyacc <command>  Set the ocamlyacc tool 
    -menhir <command>   Set the menhir tool (use it after -use-menhir) 
    -ocamllex <command>   Set the ocamllex tool 
    -ocamlmklib <command>  Set the ocamlmklib tool 
    -ocamlmktop <command>  Set the ocamlmktop tool 
    -ocamlrun <command>   Set the ocamlrun tool 
    --       Stop argument processing, remaining arguments are given to the user program 
    -help      Display this list of options 
    --help      Display this list of options 

E: Failure("Command ''/Users/user/.opam/system/bin/ocamlbuild' src/main.native -cflags -S -inline 20 -tag debug' terminated with error code 1") 
make: *** [build] Error 1 
+0

どのような種類のコンパイルエラーがありますか? –

+0

こんにちは@ÉtienneMillonエラーを追加しました。 – Istvan

+0

素晴らしい!それはanwserを見つけるのに役立つはずです:) –

答えて

2

-cflagsオプションは、オプションのカンマ区切りのリストを取り、ocamlcコンパイラに渡します。したがって、ocamlbuild' src/main.native -cflags -S -inline 20では-Sオプションのみがocamlcに渡され、-inline20ocamlbuildによって取得されます。だから、ocamlcに複数のオプションを渡すための正しい方法は次のとおりです。

ocamlbuild -cflags -S,-inline,20 x.byte 

彼らはocamloptのオプションですようocamlcは、-cflagsまたは-inlineオプションを認識しないので、これはまた、しかし、失敗します。 OCamlには2つのコンパイラがあり、1つはocamlcと呼ばれ、バイトコードが生成され、もう1つはネイティブコードを生成するocamloptです。彼らはいくつかの共通の選択肢を持っていますが、いくつかは共有されていません。たとえば、バイトコードコンパイラはアセンブリを生成できません。あなたは_oasisNativeOptフィールドを使用するか(後者はflambdaを制御するのに便利です)_tagsファイルにパラメトリックタグを使用するかocamloptにオプションを渡すこと

。認識されたタグの実際のセットについてはocamlbuild -documentationを見てください。

関連する問題