.TH "ocamlfind" "1" "مدیر بسته findlib برای OCaml" "راهنمای کاربر" .SH "نام (NAME)" .ft R ocamlfind \- رابط خط فرمان مدیر بسته\c .SH "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf \&\ \ \ \ \ \ \ ocamlfind\ query\ [-help\ |\ other\ options]\ \c .ft I package_name\c .ft B \&\ ...\c \& .br \&\ \ \ یا:\ ocamlfind\ ocamlc\ [-help\ |\ other\ options]\ \c .ft I file\c .ft B \&\ ...\c \& .br \&\ \ \ یا:\ ocamlfind\ ocamlcp\ [-help\ |\ other\ options]\ \c .ft I file\c .ft B \&\ ...\c \& .br \&\ \ \ یا:\ ocamlfind\ ocamlmktop\ [-help\ |\ other\ options]\ \c .ft I file\c .ft B \&\ ...\c \& .br \&\ \ \ یا:\ ocamlfind\ ocamlopt\ [-help\ |\ other\ options]\ \c .ft I file\c .ft B \&\ ...\c \& .br \&\ \ \ یا:\ ocamlfind\ ocamldoc\ [-help\ |\ other\ options]\ \c .ft I file\c .ft B \&\ ...\c \& .br \&\ \ \ یا:\ ocamlfind\ ocamldep\ [-help\ |\ other\ options]\ \c .ft I file\c .ft B \&\ ...\c \& .br \&\ \ \ یا:\ ocamlfind\ ocamlmklib\ [-help\ |\ other\ options]\ \c .ft I file\c .ft B \&\ ...\c \& .br \&\ \ \ یا:\ ocamlfind\ ocamlbrowser\ [-help\ |\ other\ options]\c \& .br \&\ \ \ یا:\ ocamlfind\ install\ [-help\ |\ other\ options]\ \c .ft I package_name\c .ft B \&\ \c .ft I file\c .ft B \&\ ...\c \& .br \&\ \ \ یا:\ ocamlfind\ remove\ [-help\ |\ other\ options]\ \c .ft I package_name\c .ft B \& .br \&\ \ \ یا:\ ocamlfind\ lint\ \c .ft I META\c .ft B \& .br \&\ \ \ یا:\ ocamlfind\ list\ [-describe]\c \& .br \&\ \ \ یا:\ ocamlfind\ printppx\ [-help\ |\ other\ options]\ \c .ft I package_name\c .ft B \&\ ...\c \& .br \&\ \ \ یا:\ ocamlfind\ printconf\ [\ variable\ ]\c \& .br \&\ \ \ یا:\ ocamlfind\ \c .ft I package\c .ft B /\c .ft I command\c .ft B \&\ \c .ft I arg\c .ft B \&\ ...\c \& .br \& .br انتخاب\ اختیاری\ زنجیره\ ابزار\ با:\c \& .br \&\ \ ocamlfind\ -toolchain\ \c .ft I name\c .ft B \&\ ...\c .ft R .fi.SH "زیرفرمان 'query' (THE 'query' SUBCOMMAND)" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ query\ [\ -predicates\ \c .ft I p\c .ft B \&\ \ |\ \c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -format\ \c .ft I f\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -long-format\ |\ -l\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -i-format\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -l-format\ |\ \c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -a-format\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -o-format\ |\ \c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -p-format\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -prefix\ \c .ft I p\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -separator\ \c .ft I s\c .ft B \&\ |\ \c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -suffix\ \c .ft I s\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -pp\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -descendants\ |\ -d\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -recursive\ \ |\ -r\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -qe\ |\ -qo]\ \c .ft I package\c .ft B \&\ ...\c .ft R .fi .SS "توضیحات (DESCRIPTION)" .ft R .ft R این دستور بسته‌ها را جستجو می‌کند، در صورت تمایل آن‌ها را مرتب می‌سازد و ویژگی‌هایشان را چاپ می‌کند. اگر گزینهٔ \-recursive (کوتاه: \-r) مشخص نشده باشد، دقیقاً همان بسته‌های ارائه‌شده در خط فرمان جستجو می‌شوند؛ اگر \-recursive مشخص شده باشد، بسته‌ها و تمام نیاکان آن‌ها، یا اگر \-descendants (کوتاه: \-d) نیز مشخص شده باشد، تمام نوادگان آن‌ها چاپ می‌شوند. .PP .ft R جستجوی بسته‌ها و انتخاب ویژگی‌های بسته‌ها را می‌توان با تعیین گزاره‌ها تغییر داد؛ بدون گزینهٔ \-predicates، مجموعهٔ تهی از گزاره‌ها استفاده می‌شود. توجه داشته باشید که حتی جستجو نیز تحت تأثیر مجموعهٔ گزاره‌های واقعی قرار می‌گیرد، زیرا متغیرهای "requires" ممکن است شرطی باشند. .PP .ft R آنچه دربارهٔ یک بسته چاپ می‌شود به قالب مشخص‌شده بستگی دارد؛ چندین گزینه وجود دارند که قالب را تغییر می‌دهند. برخی قالب‌ها نشان‌دهندهٔ مجموعه‌ای از مقادیر هستند (مانند \-format %a)، که در این صورت چندین رکورد خروجی برای هر بسته چاپ می‌شود. (حتی می‌توان قالب‌هایی را مشخص کرد که نشان‌دهندهٔ حاصل‌ضرب دکارتی مجموعه‌ها باشند، مانند \-format %a%o، اما این کار بی‌معنی است.) پیش از نخستین رکورد خروجی، پیشوند و پس از آخرین رکورد، پسوند چاپ می‌شود. بین دو رکورد نیز جداکننده چاپ می‌گردد..SS "گزینه‌ها (Options)" .ft R .ft R .RS "2m" .ft R -predicates .ft I p\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R مجموعه گزاره‌های واقعی را تنظیم می‌کند. آرگومان\c \& \& .ft I p\c .ft R \& فهرستی از نام‌های گزاره است که با کاما و/یا فاصله از هم جدا شده‌اند.\c \& اگر چندین گزینه -predicates داده شده باشد، اجتماع تمام مجموعه‌های تعیین‌شده استفاده می‌شود.\c .RE .ft R .sp .RS "2m" .ft R -format .ft I f\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R قالب را به رشته\c \& \& .ft I f\c .ft R \& تنظیم می‌کند. نویسه‌هایی که پیش از آن‌ها علامت درصد آمده است\c \& به‌عنوان جای‌نگه‌دار تفسیر می‌شوند؛ تمام نویسه‌های دیگر معنای خودشان\c \& را دارند. جای‌نگه‌دارهای تعریف‌شده در زیر فهرست شده‌اند.\c \& قالب پیش‌فرض "%d" است.\c .RE .ft R .sp .RS "2m" .ft R -long-format یا -l\c .RE .ft R .sp .RS "7m" .ft R .ft R قالب را به‌گونه‌ای تنظیم می‌کند که تمام متغیرهای مرتبط چاپ شوند.\c .RE .ft R .sp .RS "2m" .ft R -i-format\c .RE .ft R .sp .RS "7m" .ft R .ft R مشابه -format "-I %d"، یعنی گزینه‌های دایرکتوری برای ocamlc چاپ می‌شوند.\c .RE .ft R .sp .RS "2m" .ft R -l-format\c .RE .ft R .sp .RS "7m" .ft R .ft R مشابه -format "-ccopt -L%d"، یعنی گزینه‌های دایرکتوری برای\c \& بک‌اند پیونددهنده چاپ می‌شوند.\c .RE .ft R .sp .RS "2m" .ft R -a-format\c .RE .ft R .sp .RS "7m" .ft R .ft R مشابه -format "%+a"، یعنی نام فایل‌های آرشیو چاپ می‌شوند.\c .RE .ft R .sp .RS "2m" .ft R -o-format\c .RE .ft R .sp .RS "7m" .ft R .ft R مشابه -format "%o"، یعنی گزینه‌های پیونددهنده چاپ می‌شوند.\c .RE .ft R .sp .RS "2m" .ft R -p-format\c .RE .ft R .sp .RS "7m" .ft R .ft R مشابه -format "%p"، یعنی نام بسته‌ها چاپ می‌شوند.\c .RE .ft R .sp .RS "2m" .ft R -prefix .ft I p\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R پیشوندی را که قبل از اولین رکورد خروجی چاپ می‌شود\c \& \& به رشته داده‌شده تنظیم می‌کند. پیشوند پیش‌فرض رشته خالی است.\c .RE .ft R .sp .RS "2m" .ft R -suffix .ft I s\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R پسوندی را که بعد از آخرین رکورد خروجی چاپ می‌شود\c \& \& به رشته داده‌شده تنظیم می‌کند. پسوند پیش‌فرض رشته خالی است.\c .RE .ft R .sp .RS "2m" .ft R -separator .ft I s\c .ft R .RE .ft R.sp .RS "7m" .ft R .ft R جداکننده‌ای که بین رکوردهای خروجی چاپ می‌شود را روی\c \& \& رشته داده‌شده تنظیم می‌کند. جداکننده پیش‌فرض یک نویسه خط جدید (linefeed) است.\c .RE .ft R .sp .RS "2m" .ft R -recursive یا -r\c .RE .ft R .sp .RS "7m" .ft R .ft R نه تنها بسته‌های داده‌شده در خط فرمان پرس‌وجو می‌شوند،\c \& \& بلکه تمامی نیاکان یا نوادگان نیز بررسی می‌شوند. اگر گزینه -descendants نیز\c \& \& مشخص شده باشد، نوادگان چاپ می‌شوند، در غیر این صورت\c \& \& نیاکان. بسته‌ها به‌صورت توپولوژیکی مرتب می‌شوند.\c .RE .ft R .sp .RS "2m" .ft R -descendants -d\c .RE .ft R .sp .RS "7m" .ft R .ft R به جای نیاکان، نوادگان\c \& \& بسته‌های داده‌شده پرس‌وجو می‌شوند. این گزینه متضمن -recursive\c \& است.\c .RE .ft R .sp .RS "2m" .ft R -pp\c .RE .ft R .sp .RS "7m" .ft R .ft R پرس‌وجوی بسته‌های پیش‌پردازنده (افزونه‌های نحو camlp4). به‌طور معمول\c \& نیازی به تنظیم -predicates نیست، مگر اینکه به بایگانی‌ها نیاز داشته باشید (در این صورت\c \& -predicates byte را اضافه کنید). این گزینه متضمن -recursive\c \& است.\c .RE .ft R .sp .RS "2m" .ft R -qe\c .RE .ft R .sp .RS "7m" .ft R .ft R بیشتر خطاها را در stderr چاپ نمی‌کند، فقط کد خروج را تنظیم می‌کند\c .RE .ft R .sp .RS "2m" .ft R -qo\c .RE .ft R .sp .RS "7m" .ft R .ft R خروجی عادی را چاپ نمی‌کند.\c .RE .ft R .PP .ft R.SS "جای‌نگهدارهای معنادار در گزینه \-format" .ft R .ft R .RS "2m" .ft R %%\c .RE .ft R .sp .RS "7m" .ft R .ft R با یک علامت درصد تکی جایگزین می‌شود\c .RE .ft R .sp .RS "2m" .ft R %p\c .RE .ft R .sp .RS "7m" .ft R .ft R با نام بسته جایگزین می‌شود\c .RE .ft R .sp .RS "2m" .ft R %d\c .RE .ft R .sp .RS "7m" .ft R .ft R با دایرکتوری بسته جایگزین می‌شود\c .RE .ft R .sp .RS "2m" .ft R %m\c .RE .ft R .sp .RS "7m" .ft R .ft R با مسیر فایل META جایگزین می‌شود (جدید از findlib-1.6)\c .RE .ft R .sp .RS "2m" .ft R %D\c .RE .ft R .sp .RS "7m" .ft R .ft R با توضیحات بسته جایگزین می‌شود\c .RE .ft R .sp .RS "2m" .ft R %v\c .RE .ft R .sp .RS "7m" .ft R .ft R با رشته نسخه جایگزین می‌شود\c .RE .ft R .sp .RS "2m" .ft R %a\c .RE .ft R .sp .RS "7m" .ft R .ft R با نام فایل آرشیو جایگزین می‌شود. اگر بیش از\c \& \& یک آرشیو وجود داشته باشد، یک رکورد خروجی جداگانه برای هر آرشیو چاپ می‌شود.\c .RE .ft R .sp .RS "2m" .ft R %+a\c .RE .ft R .sp .RS "7m" .ft R .ft R مانند %a، اما نام فایل‌ها به مسیرهای مطلق\c \& \& تبدیل می‌شوند (نشانه‌گذاری‌های "+" و "@" حل می‌شوند)\c .RE .ft R .sp .RS "2m" .ft R %A\c .RE .ft R .sp .RS "7m" .ft R .ft R با فهرست نام فایل‌های آرشیو جایگزین می‌شود.\c .RE .ft R .sp .RS "2m" .ft R %+A\c .RE .ft R .sp .RS "7m" .ft R .ft R مانند %A، اما نام فایل‌ها به مسیرهای مطلق\c \& \& تبدیل می‌شوند (نشانه‌گذاری‌های "+" و "@" حل می‌شوند)\c .RE .ft R .sp .RS "2m" .ft R %o\c .RE .ft R .sp .RS "7m" .ft R .ft R با یک گزینه لینکر جایگزین می‌شود. اگر بیش از\c \& \& یک گزینه وجود داشته باشد، یک رکورد خروجی جداگانه برای هر گزینه چاپ می‌شود.\c .RE .ft R .sp .RS "2m" .ft R %O\c .RE .ft R .sp .RS "7m" .ft R .ft R با فهرست گزینه‌های لینکر جایگزین می‌شود.\c .RE .ft R .sp .RS "2m" .ft R %(\c .ft I property\c .ft R )\c .RE .ft R .sp .RS "7m" .ft R .ft R با مقدار ویژگی نام‌برده‌شده در پرانتز، یا در\c \& صورت تعریف نشدن با یک رشته خالی جایگزین می‌شود.\c .RE .ft R.PP .ft R .SH "زیرفرمان‌های 'ocamlc'، 'ocamlcp'، 'ocamlopt' و 'ocamlmktop'" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ (\ ocamlc\ |\ ocamlcp\ |\ ocamlopt\ |\ ocamlmktop\ )\c \& .br \&\ \ \ \ \ \ \ \ \ \ [\ -package\ \c .ft I package-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -linkpkg\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -predicates\ \c .ft I pred-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -dontlink\ \c .ft I package-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -syntax\ \c .ft I pred-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -ppopt\ \c .ft I camlp4-arg\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -ppxopt\ \c .ft I package\c .ft B ,\c .ft I arg\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -dllpath-pkg\ \c .ft I package-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -dllpath-all\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -passopt\ \c .ft I arg\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -passrest\ \c .ft I arg...\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -only-show\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \c .ft I standard-option\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \c .ft I file\c .ft B \&\ ...\c .ft R .fi.SS "توضیحات (Description)" .ft R .ft R این زیردستورها راه‌اندازهایی برای کامپایلرهایی با همین نام هستند،\c \& بدین معنی که "ocamlfind ocamlc" یک راه‌انداز برای "ocamlc" است و به همین ترتیب. این\c \& زیردستورها تمام گزینه‌های مستندشدهٔ کامپایلرها را درک می‌کنند (که در اینجا .ft I standard-options\c .ft R نامیده می‌شوند)، اما همچنین چند\c \& گزینهٔ بیشتر را نیز می‌شناسند. اگر این زیردستورها تنها با گزینه‌های استاندارد\c \& فراخوانی شوند، همانند زمانی رفتار می‌کنند که کامپایلرِ زیرین مستقیماً\c \& فراخوانی شده باشد. گزینه‌های اضافی این رفتار را تغییر می‌دهند.\c .PP .ft R درون سیستم، این زیردستورها فهرست ارائه‌شده از گزینه‌ها و آرگومان‌های\c \& فایل را به فراخوانی کامپایلرِ هدایت‌شده تبدیل می‌کنند. این تبدیل\c \& صرفاً گزینه‌ها و فایل‌هایی را می‌افزاید، و ترتیب نسبیِ\c \& گزینه‌ها و فایل‌های مستقیماً ارائه‌شده بدون تغییر باقی می‌ماند.\c .PP .ft R اگر گزینه‌های \-package وجود داشته باشند، مشخص‌کننده‌های جستجوی دایرکتوری اضافی\c \& لحاظ خواهند شد ("\-I" و "\-ccopt \-I")، به‌گونه‌ای که فایل‌های تمام بسته‌های نام‌برده\c \& و همهٔ نیاکان (اجداد) آن‌ها قابل یافتن باشند.\c .PP .ft R گزینه \-linkpkg باعث می‌شود بسته‌های فهرست‌شده در گزینه‌های \-package\c \& و تمام نیاکان مورد نیاز پیوند داده شوند. این بدان معناست که\c \& فایل‌های آرشیو پیاده‌سازی‌کنندهٔ بسته‌ها در فهرست آرگومان‌های فایل\c \& درج می‌شوند.\c .PP .ft R از آنجا که پایگاه‌دادهٔ بسته پرس‌وجو می‌شود، مجموعه‌ای از مسندها (predicates) مورد نیاز است. بیشتر\c \& مسندها به‌طور خودکار تنظیم می‌شوند (به پایین مراجعه کنید)، اما مسندهای دیگر\c \& می‌توانند توسط گزینه \-predicates مشخص شوند.\c .PP .ft R اگر گزینه \-syntax\c \& وجود داشته باشد، راه‌اندازها فرض می‌کنند که باید\c \& از یک پیش‌پردازنده استفاده شود. در این صورت، دستور پیش‌پردازنده ابتدا\c \& در مرحله پیش‌پردازنده ساخته می‌شود و این دستور با استفاده از گزینه \-pp\c \& به کامپایلر منتقل می‌گردد. مجموعه مسندها\c \& در مرحله پیش‌پردازنده با مجموعه موجود در مرحله کامپایلر/پیونددهنده\c \& متفاوت است.\c .SS "گزینه‌های کامپایل و پیونددهی (Options for compiling and linking)" .ft R .ft R در اینجا تنها گزینه‌های اضافی که توسط کامپایلر تفسیر نمی‌شوند بلکه\c \& توسط خود راه‌انداز تفسیر می‌گردند، و گزینه‌های دارای اثرات اضافی توضیح داده شده‌اند.\c \& برخی گزینه‌ها صرفاً برای فراخوانی پیش‌پردازنده معنا دارند و در ادامه\c \& توضیح داده می‌شوند.\c .PP .ft R .RS "2m" .ft R \-package .ft I package-name-list\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R نام‌های بسته‌های فهرست‌شده را به مجموعه بسته‌های گنجانده‌شده\c \& \& اضافه می‌کند. نام‌های بسته می‌توانند با کاما و/یا\c \& \& فاصله سفید (whitespace) از یکدیگر جدا شوند. در دستور تبدیل‌شده، برای هر بسته از مجموعه\c \& \& بسته‌های گنجانده‌شده و هر نیاک (اجداد)، یک گزینه جستجوی دایرکتوری\c \& \& پس از گزینه‌های از پیش داده‌شده درج می‌شود. این بدان معناست که\c \& \& گزینه‌های "\-I" و "\-ccopt \-I" برای دایرکتوری هر بسته اضافه می‌گردند.\c \& \& .RE .ft R .sp .RS "2m" .ft R \-linkpkg\c .RE .ft R .sp .RS "7m" .ft R .ft R باعث می‌شود که در دستور تبدیل‌شده، تمام آرشیوهای\c \& \& بسته‌های مشخص‌شده با \-packages و تمام نیاکان آن‌ها به\c \& \& آرگومان‌های فایل اضافه شوند. دقیق‌تر، این آرشیوها\c \& \& پیش از نخستین آرگومان فایلِ داده‌شده درج می‌شوند. افزون بر این، گزینه‌های "\-ccopt\c \& \& \-L" برای تمام دایرکتوری‌های بسته‌ها و نیز گزینه‌های پیونددهندهٔ\c \& \& بسته‌های انتخاب‌شده اضافه می‌گردند. توجه داشته باشید که آرشیوها\c \& \& به ترتیب توپولوژیکی درج می‌شوند، در حالی که گزینه‌های پیونددهنده به\c \& \& ترتیب توپولوژیکی معکوس افزوده می‌شوند.\c .RE .ft R .sp .RS "2m" .ft R \-predicates .ft I pred-name-list\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R مسندهای داده‌شده را به مجموعه مسندهای واقعی\c \& \& اضافه می‌کند. مسندها باید با کاما و/یا\c \& \& فاصله سفید از یکدیگر جدا شوند. .RE .ft R .sp .RS "2m" .ft R \-dontlink .ft I package-name-list\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R این گزینه رفتار\c \& \& \-linkpkg را تغییر می‌دهد. بسته‌های مشخص‌شده در اینجا و تمام نیاکان آن‌ها پیوند\c \& \& داده نمی‌شوند. باز هم بسته‌ها با کاما و/یا فاصله سفید از یکدیگر جدا می‌شوند.\c .RE .ft R .sp .RS "2m" .ft R \-dllpath-pkg .ft I package-name-list\c .ft R .RE .ft R.sp .RS "7m" .ft R .ft R برای این بسته‌ها، گزینه‌های -dllpath\c \& به\c \& \& دستور کامپایلر اضافه می‌شوند. این ویژگی ممکن است زمانی که فایل ld.conf\c \& \& به‌درستی پیکربندی نشده است، مفید واقع شود.\c .RE .ft R .sp .RS "2m" .ft R -dllpath-all\c .RE .ft R .sp .RS "7m" .ft R .ft R برای تمامی بسته‌های پیوندشده، گزینه‌های -dllpath\c \& به\c \& \& دستور کامپایلر اضافه می‌شوند. این ویژگی ممکن است زمانی که فایل ld.conf\c \& \& به‌درستی پیکربندی نشده است، مفید واقع شود.\c .RE .ft R .sp .RS "2m" .ft R -passopt .ft I arg\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R آرگومان .ft I arg\c .ft R \& مستقیماً\c \& \& به کامپایلر زیرین ارسال می‌شود. این گزینه برای تعیین\c \& \& گزینه‌های مستندنشده کامپایلر لازم است.\c .RE .ft R .sp .RS "2m" .ft R -passrest .ft I arg...\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R همه آرگومان‌های پس از آن .ft I arg...\c .ft R \& مستقیماً\c \& \& به کامپایلر زیرین فرستاده می‌شوند. این گزینه برای مشخص کردن\c \& \& گزینه‌های مستندنشده کامپایلر لازم است.\c .RE .ft R .sp .RS "2m" .ft R -only-show\c .RE .ft R .sp .RS "7m" .ft R .ft R تنها دستور ساخته‌شده (ocamlc/ocamlopt) را در\c \& \& خروجی استاندارد (stdout) چاپ می‌کند، اما آن را اجرا نمی‌کند. (این برای موارد نادری است\c \& \& که به یک پوشش پیرامون ocamlfind نیاز داشته باشید.)\c .RE .ft R .sp .RS "2m" .ft R -verbose\c .RE .ft R .sp .RS "7m" .ft R .ft R این گزینه استاندارد توسط گرداننده (driver) نیز تفسیر می‌شود.\c .RE .ft R .sp .RS "2m" .ft R -thread\c .RE .ft R .sp .RS "7m" .ft R .ft R این گزینه استاندارد باعث می‌شود که گزاره "mt"\c \& \& به مجموعه گزاره‌های کنونی اضافه شود. اگر ریسه‌های POSIX در دسترس باشند،\c \& \& گزاره "mt_posix" نیز انتخاب می‌شود. اگر فقط ریسه‌های VM در\c \& \& دسترس باشند، گزاره "mt_vm" به مجموعه اضافه شده و\c \& \& سوییچ کامپایلر به -vmthread تغییر می‌یابد.\c .PP .ft R توجه داشته باشید که وجود گزاره "mt" موجب اصلاح ویژه\c \& گراف وابستگی می‌شود (پایین را ببینید).\c .RE .ft R .sp .RS "2m" .ft R -vmthread\c .RE .ft R .sp .RS "7m" .ft R .ft R این گزینه استاندارد باعث می‌شود گزاره‌های "mt"\c \& \& و "mt_vm" به مجموعه گزاره‌های کنونی اضافه شوند.\c .PP .ft R توجه داشته باشید که وجود گزاره "mt" موجب اصلاح ویژه\c \& گراف وابستگی می‌شود (پایین را ببینید).\c .RE .ft R .sp .RS "2m" .ft R -p\c .RE .ft R .sp .RS "7m" .ft R .ft R این گزینه استاندارد "ocamlopt" باعث می‌شود که\c \& \& گزاره "gprof" به مجموعه گزاره‌های کنونی افزوده شود.\c .RE .ft R .PP .ft R.SS "گزینه‌های پیش‌پردازش (Options for preprocessing)" .ft R .ft R گزینه‌های مربوط به پیش‌پردازنده به شرح زیر هستند:\c .PP .ft R .RS "2m" .ft R -package .ft I package-name-list\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R این بسته‌ها هنگام جستجوی آرگومان‌های\c \& \& پیش‌پردازنده در نظر گرفته می‌شوند. (اینکه از همان گزینه\c \& \& -package برای این منظور استفاده می‌شود مشکلی ایجاد نمی‌کند، زیرا مجموعه گزاره‌ها\c \& \& متفاوت است.) در صورتی که قرار است از پیش‌پردازنده استفاده شود، توصیه می‌شود حداقل camlp4\c \& \& در اینجا ذکر شود.\c \& \& .RE .ft R .sp .RS "2m" .ft R -syntax .ft I pred-name-list\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R این گزاره‌ها علاوه بر گزاره‌های استاندارد پیش‌پردازنده،\c \& \& درست فرض می‌شوند. برای مشاهده فهرست به ادامه مراجعه کنید.\c .RE .ft R .sp .RS "2m" .ft R -ppopt .ft I camlp4-arg\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R این آرگومان به فراخوانی camlp4 ارسال می‌شود.\c \& \& .RE .ft R .sp .RS "2m" .ft R -ppxopt .ft I package\c .ft R ,\c .ft I arg\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R افزودن .ft I arg\c .ft R \& به فراخوانی پیش‌پردازنده ppx\c \& \& که از طریق ویژگی "ppx" در\c \& \& فایل META مربوط به .ft I package\c .ft R \& مشخص شده است.\c \& \& .RE .ft R .PP .ft R.SS "گزاره‌های کامپایل و پیوند (Predicates for compiling and linking)" .ft R .ft R .RS "2m" .ft R byte\c .RE .ft R .sp .RS "7m" .ft R .ft R گزارهٔ «byte» بدین معناست که یکی از کامپایلرهای بایت‌کد (bytecode) به کار\c \& رفته است. در صورتی که از کامپایلر «ocamlc»، «ocamlcp» یا «ocamlmktop»\c \& استفاده شود، این گزاره به‌طور خودکار در مجموعه گزاره‌ها گنجانده می‌شود.\c .RE .ft R .sp .RS "2m" .ft R native\c .RE .ft R .sp .RS "7m" .ft R .ft R گزارهٔ «native» بدین معناست که کامپایلر بومی استفاده شده است. در صورتی که\c \& از کامپایلر «ocamlopt» استفاده شود، به‌طور خودکار در مجموعه گزاره‌ها\c \& گنجانده می‌شود.\c .RE .ft R .sp .RS "2m" .ft R toploop\c .RE .ft R .sp .RS "7m" .ft R .ft R گزارهٔ «toploop» بدین معناست که toploop در برنامهٔ پیوند خورده در دسترس\c \& است. این گزاره تنها زمانی تنظیم می‌شود که toploop در عمل در حال اجرا باشد،\c \& نه هنگامی که toploop ایجاد می‌شود (این رفتار در نسخهٔ 1.0.4 از findlib\c \& تغییر کرد).\c .RE .ft R .sp .RS "2m" .ft R create_toploop\c .RE .ft R .sp .RS "7m" .ft R .ft R این گزاره بدین معناست که یک toploop (با استفاده از\c \& ocamlmktop) در حال ایجاد شدن است.\c .RE .ft R .sp .RS "2m" .ft R mt\c .RE .ft R .sp .RS "7m" .ft R .ft R گزارهٔ «mt» بدین معناست که برنامه چندریسمانی است. در صورتی که گزینهٔ\c \& \-thread داده شده باشد، به‌طور خودکار در مجموعه گزاره‌ها گنجانده\c \& می‌شود. .RE .ft R .sp .RS "2m" .ft R mt_posix\c .RE .ft R .sp .RS "7m" .ft R .ft R گزارهٔ «mt_posix» بدین معناست که در صورت تنظیم بودن «mt»، کتابخانه‌های\c \& POSIX برای پیاده‌سازی ریسمان‌ها به کار می‌روند. اگر متغیر «type_of_threads» در\c \& شرح META بستهٔ «threads» مقدار «posix» داشته باشد، «mt_posix» به‌طور خودکار\c \& در مجموعه گزاره‌ها گنجانده می‌شود. این حالت معمولاً در صورتی رخ می‌دهد که\c \& «findlib» برای ریسمان‌های POSIX پیکربندی شده باشد.\c .RE .ft R .sp .RS "2m" .ft R mt_vm\c .RE .ft R .sp .RS "7m" .ft R .ft R گزارهٔ «mt_vm» بدین معناست که در صورت تنظیم بودن «mt»، از شبیه‌سازی ریسمان\c \& VM برای پیاده‌سازی چندریسمانی استفاده می‌شود.\c .RE .ft R .sp .RS "2m" .ft R gprof\c .RE .ft R .sp .RS "7m" .ft R .ft R گزارهٔ «gprof» بدین معناست که در صورت تنظیم بودن «native»، برنامه برای\c \& پروفایل‌گیری کامپایل می‌شود. در صورتی که «ocamlopt» استفاده شود و گزینهٔ\c \& \-p اعمال شده باشد، به‌طور خودکار در مجموعه گزاره‌ها گنجانده\c \& می‌شود.\c .RE .ft R .sp .RS "2m" .ft R autolink\c .RE .ft R .sp .RS "7m" .ft R .ft R گزارهٔ «autolink» بدین معناست که ocamlc توانایی انجام پیوند خودکار را دارد.\c \& اگر ocamlc پیوند خودکار را بشناسد (از نسخهٔ 3.00)، این گزاره به‌طور خودکار\c \& در مجموعه گزاره‌ها قرار می‌گیرد، اما اگر گزینهٔ \-noautolink تنظیم شده\c \& باشد، مقداردهی نمی‌شود.\c .RE .ft R .sp .RS "2m" .ft R syntax\c .RE .ft R .sp .RS "7m" .ft R .ft R این گزاره در صورتی که گزینهٔ \-syntax\c \& وجود داشته باشد تنظیم می‌شود. این گزاره هم برای مرحلهٔ پیش‌پردازنده و هم کامپایلر/پیونددهنده\c \& تنظیم می‌شود، و می‌توان از آن برای تشخیص فعال بودن یا نبودن پیش‌پردازنده استفاده کرد.\c \& \& .RE .ft R.PP .ft R .SS "گزاره‌ها برای پیش‌پردازش (Predicates for preprocessing)" .ft R .ft R .RS "2m" .ft R preprocessor\c .RE .ft R .sp .RS "7m" .ft R .ft R این گزاره همواره هنگام بررسی\c \& \& آرگومان‌های پیش‌پردازنده تنظیم می‌شود. می‌توان از آن برای تمایز بین\c \& \& مرحلهٔ پیش‌پردازنده و مرحلهٔ کامپایلر/پیونددهنده استفاده کرد.\c .RE .ft R .sp .RS "2m" .ft R syntax\c .RE .ft R .sp .RS "7m" .ft R .ft R این گزاره در صورت وجود گزینهٔ \-syntax\c \& \& تنظیم می‌شود. این گزاره هم برای مرحلهٔ پیش‌پردازنده و هم برای مرحلهٔ کامپایلر/پیونددهنده تنظیم\c \& \& می‌شود، و می‌توان از آن برای تشخیص فعال بودن یا نبودن پیش‌پردازنده استفاده کرد.\c \& \& .RE .ft R .sp .RS "2m" .ft R camlp4o\c .RE .ft R .sp .RS "7m" .ft R .ft R این گزارهٔ رزروشده برای نحو استاندارد OCaml است.\c \& \& می‌توان از آن در فهرست گزاره‌های \-syntax\c \& استفاده کرد.\c \& \& .RE .ft R .sp .RS "2m" .ft R camlp4r\c .RE .ft R .sp .RS "7m" .ft R .ft R این گزارهٔ رزروشده برای نحو بازنگری‌شدهٔ OCaml است.\c \& \& می‌توان از آن در فهرست گزاره‌های \-syntax\c \& استفاده کرد.\c \& \& .RE .ft R .PP .ft R.SS "رفتار ویژه 'ocamlmktop'" .ft R .ft R از آنجا که ماژول ویژه Topfind\c \& وجود دارد که\c \& از بارگذاری بسته‌ها در اسکریپت‌ها پشتیبانی می‌کند، زیرفرمان "ocamlmktop"\c \& می‌تواند کد مقداردهی اولیه را برای این ماژول بیفزاید. این کد اضافی در\c \& صورتی در فایل اجرایی پیوند داده می‌شود که "findlib" در مجموعه بسته‌های به‌طور مؤثر\c \& پیوندخورده قرار داشته باشد. .SS "اصلاح گراف وابستگی برای چندنخی" .ft R .ft R به دلایل متعددی، وجود گزاره "mt" باعث می‌شود\c \& که (۱) بسته "threads" به فهرست بسته‌های موردنیاز افزوده شود\c \& و (۲) بسته "threads" پیش‌نیاز همه بسته‌های دیگر گردد\c \& (به‌جز خودش و چند استثنای درون‌کدی). تأثیر این امر آن است که\c \& گزینه‌های -thread و -vmthread به‌طور خودکار بسته "threads" را\c \& انتخاب می‌کنند، و "threads" در جایگاه درست در فهرست بسته‌ها\c \& درج می‌شود.\c .SS "نام‌گذاری گسترش‌یافته فایل‌ها" .ft R .ft R در بخش‌های متعددی، نه‌تنها می‌توان با نام‌های مسیر مطلق\c \& یا نسبی به فایل‌ها ارجاع داد، بلکه می‌توان از نام‌های گسترش‌یافته نیز بهره برد. این نام‌ها دو\c \& شکل اصلی دارند: "+\c .ft I name\c .ft R "\c \& به زیردایرکتوری .ft I name\c .ft R \& از دایرکتوری\c \& کتابخانه استاندارد اشاره دارد، و "@\c .ft I name\c .ft R "\c \& به دایرکتوری بسته .ft I name\c .ft R \& اشاره می‌کند.\c \& هر دو شکل می‌توانند با یک مسیر ادامه یابند، مانند "@netstring/netstring_top.cma".\c .PP .ft R می‌توانید از نام‌های گسترش‌یافته استفاده کنید: (۱) با گزینه‌های -I\c \&،\c \& (۲) به عنوان آرگومان‌های معمولی فایل در کامپایلر، (۳) در ویژگی \& "archive" بسته‌ها.\c .SS "نحوه تنظیم نام فایل‌های اجرایی کامپایلر" .ft R .ft R به‌طور معمول، کامپایلر بایت‌کد OCaml را می‌توان با نام\c \& ocamlc\c \& فراخوانی کرد. با این حال، همیشه این‌طور نیست؛ گاهی اوقات یک\c \& نام متفاوت انتخاب می‌شود.\c .PP .ft R می‌توانید به ocamlfind دستور دهید فایل‌های اجرایی را با نام‌هایی غیر از\c \& ocamlc\c ، ocamlopt\c ،\c \& ocamlmktop\c و ocamlcp\c \& فراخوانی کند. در صورت وجود،\c \& متغیر محیطی OCAMLFIND_COMMANDS\c \& به عنوان یک نگاشت\c \& از نام‌های استاندارد به نام‌های واقعی فایل‌های اجرایی تفسیر می‌شود. این متغیر\c \& باید قالب زیر را داشته باشد:\c \& \& .PP .ft R .ft B .nf .ft I standardname1\c .ft B =\c .ft I actualname1\c .ft B \&\ \c .ft I standardname2\c .ft B =\c .ft I actualname2\c .ft B \&\ ...\c .ft R .fi .PP .ft R مثال: می‌توانید OCAMLFIND_COMMANDS\c \& را به صورت زیر تنظیم کنید:\c \& \& .PP .ft R .ft B .nf OCAMLFIND_COMMANDS='ocamlc=ocamlc-3.00\ ocamlopt=ocamlopt-3.00'\c \& .br export\ OCAMLFIND_COMMANDS\c .ft R .fi .PP .ft R همچنین، می‌توانید فایل پیکربندی\c \& findlib.conf\c \& را تغییر دهید.\c.SH "زیرفرمان 'ocamlmklib' (THE SUBCOMMAND 'ocamlmklib')" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ ocamlmklib\c \& .br \&\ \ \ \ \ \ \ \ \ \ [\ -package\ \c .ft I package-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -predicates\ \c .ft I pred-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -dllpath-pkg\ \c .ft I package-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -dllpath-all\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -passopt\ \c .ft I arg\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -passrest\ \c .ft I arg...\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \c .ft I standard-option\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \c .ft I file\c .ft B \&\ ...\c .ft R .fi .SS "توضیحات (DESCRIPTION)" .ft R .ft R این دستور یک پوشش (wrapper) پیرامون ocamlmklib است و بایگانی‌های کتابخانه و\c \& DLLها را ایجاد می‌کند. علاوه بر گزینه‌های استاندارد، می‌توان از \-package برای\c \& افزودن مسیر جستجوی بسته‌ها استفاده کرد. توجه داشته باشید که به‌طور پیش‌فرض هیچ گزاره‌ای (predicate) تنظیم نشده است \-\c \& این پوشش نمی‌داند که این پیوند مربوط به کد بایتی (bytecode) است یا کد بومی (native code).\c .PP .ft R این پوشش عمدتاً برای کامل بودن ارائه شده است.\c .SH "زیرفرمان 'ocamldep' (THE 'ocamldep' SUBCOMMAND)" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ ocamldep\ [-package\ \c .ft I package-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -syntax\ \c .ft I pred-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -ppopt\ \c .ft I camlp4-arg\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -passopt\ \c .ft I arg\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -passrest\ \c .ft I arg...\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -verbose\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \c .ft I standard-option\c .ft B ]\ \c .ft I file\c .ft B \&\ ...\c .ft R .fi.SS "توضیحات (DESCRIPTION)" .ft R .ft R این دستور یک راه‌انداز برای ابزار ocamldep\c \& از توزیع\c \& OCaml است. این راه‌انداز تنها در ترکیب با\c \& پیش‌پردازنده camlp4 سودمند است؛ در غیر این صورت قابلیت‌های بیشتری نسبت به خود ocamldep\c \& ارائه نمی‌دهد.\c .SS "گزینه‌ها (OPTIONS)" .ft R .ft R در اینجا، تنها گزینه‌های اضافی که توسط ocamldep\c \& تفسیر نمی‌شوند بلکه\c \& توسط خود راه‌انداز پردازش می‌گردند، و گزینه‌هایی با اثرات اضافی توضیح داده شده‌اند.\c .PP .ft R .RS "2m" .ft R -package .ft I package-name-list\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R بسته‌های نام‌برده در اینجا فقط برای یافتن گزینه‌های\c \& پیش‌پردازنده استفاده می‌شوند. بسته camlp4\c \& در هر صورت باید\c \& مشخص شود، اما بسته‌های بیشتری که قابلیت‌هایی به پیش‌پردازنده\c \& می‌افزایند نیز می‌توانند ارسال شوند.\c .RE .ft R .sp .RS "2m" .ft R -syntax .ft I pred-name-list\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R گزاره‌هایی که هنگام جست‌وجوی گزینه‌های\c \& پیش‌پردازنده مؤثر هستند. دست‌کم باید یکی از camlp4o\c \& (انتخاب نحو عادی)، یا camlp4r\c \& (انتخاب\c \& نحو بازنگری‌شده) مشخص شود.\c .RE .ft R .sp .RS "2m" .ft R -ppopt .ft I camlp4-arg\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R گزینه‌ای که مستقیماً به فراخوانی camlp4 منتقل می‌شود.\c .RE .ft R .sp .RS "2m" .ft R -passopt .ft I arg\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R گزینه‌ای که مستقیماً به فراخوانی ocamldep منتقل می‌شود.\c .RE .ft R .sp .RS "2m" .ft R -passrest .ft I arg...\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R تمام آرگومان‌های بعدی بدون پردازش به ocamldep\c \& \& تحویل داده می‌شوند\c .RE .ft R .sp .RS "2m" .ft R -verbose\c .RE .ft R .sp .RS "7m" .ft R .ft R دستور نهایی ocamldep را نمایش می‌دهد (برای اشکال‌زدایی)\c .RE .ft R .PP .ft R.SS "مثال (EXAMPLE)" .ft R .ft R یک روش معمول برای استفاده از این گرداننده:\c \& \& .PP .ft R .ft B .nf ocamlfind\ ocamldep\ -package\ camlp4,xstrp4\ -syntax\ camlp4r\ file1.ml\ file2.ml\c .ft R .fi \& \& این دستور وابستگی‌های file1.ml\c \& و\c \& file2.ml\c \& را در خروجی نمایش می‌دهد، هرچند این ماژول‌ها از افزونه‌های نحوی ارائه‌شده توسط xstrp4\c \& استفاده می‌کنند و با نحو بازبینی‌شده (revised syntax) نوشته شده‌اند.\c .SH "زیرفرمان 'ocamlbrowser' (THE 'ocamlbrowser' SUBCOMMAND)" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ ocamlbrowser\ [-package\ \c .ft I package-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -all\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -passopt\ \c .ft I arg\c .ft B \&\ \c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -passrest\ ]\c .ft R .fi .SS "توضیحات (DESCRIPTION)" .ft R .ft R این گرداننده ocamlbrowser\c \& را با گزینه‌های بسته فراخوانی می‌کند.\c \& با -package\c ، بسته‌های مشخص‌شده در مسیر جستجوی مرورگر گنجانده می‌شوند و ماژول‌های این بسته‌ها\c \& (علاوه بر کتابخانهٔ استاندارد) قابل مشاهده می‌گردند. گزینهٔ -all\c \& باعث می‌شود تمام بسته‌هایی که توسط findlib مدیریت می‌شوند، انتخاب گردند.\c .PP .ft R همانند سایر گرداننده‌ها، گزینه‌های -passopt\c \& و\c \& -passrest\c \& می‌توانند برای ارسال مستقیم آرگومان‌ها به برنامهٔ ocamlbrowser\c \& استفاده شوند.\c.SH "زیردستور 'ocamldoc' (THE SUBCOMMAND 'ocamldoc')" .ft R .SS "خلاصه دستور (Synopsis)" .ft R .ft R .ft B .nf ocamlfind\ ocamldoc\c \& .br \&\ \ \ \ \ \ \ \ \ \ [\ -package\ \c .ft I package-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -predicates\ \c .ft I pred-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -syntax\ \c .ft I pred-name-list\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ -ppopt\ \c .ft I camlp4-arg\c .ft B \&\ |\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \c .ft I standard-option\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \c .ft I file\c .ft B \&\ ...\c .ft R .fi .SS "توضیحات (Description)" .ft R .ft R این زیردستور یک گرداننده برای ocamldoc است. این دستور تمام گزینه‌هایی را که\c \& ocamldoc پشتیبانی می‌کند، به‌همراه گزینه‌های ذکرشدهٔ findlib درک می‌کند. اساساً،\c \& گزینه‌های -package به گزینه‌های -I، و گزینه‌های نحو\c \& (syntax) انتخاب‌شده به گزینه‌های camlp4 ترجمه می‌شوند.\c .SS "گزینه‌ها (Options)" .ft R .ft R در اینجا، تنها گزینه‌های اضافی که توسط ocamldep\c \& تفسیر نمی‌شوند بلکه\c \& توسط خود گرداننده پردازش می‌شوند، و گزینه‌های دارای اثرات مضاعف توضیح داده شده‌اند.\c .PP .ft R .RS "2m" .ft R -package .ft I package-name-list\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R نام بسته‌های فهرست‌شده را به مجموعهٔ بسته‌های گنجانده‌شده اضافه\c \& \& می‌کند. نام بسته‌ها می‌توانند با کاما و/یا فاصله از یکدیگر\c \& \& جدا شوند. در دستور دگرگون‌شده، برای هر بسته از مجموعهٔ بسته‌های\c \& \& گنجانده‌شده و برای هر نیا، یک گزینهٔ جستجوی دایرکتوری بعد از گزینه‌های\c \& \& داده‌شده درج می‌شود. این بدان معناست که گزینه‌های "-I" برای\c \& \& دایرکتوری هر بسته اضافه می‌شوند.\c \& \& .RE .ft R .sp .RS "2m" .ft R -predicates .ft I pred-name-list\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R محمول‌های ارائه‌شده را به مجموعهٔ محمول‌های واقعی (actual)\c \& \& اضافه می‌کند. محمول‌ها باید با کاما و/یا فاصله از یکدیگر\c \& \& جدا شوند. .RE .ft R .sp .RS "2m" .ft R -syntax .ft I pred-name-list\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R محمول‌هایی که در طول جستجوی گزینه‌های پیش‌پردازنده نافذ\c \& هستند. حداقل باید یکی از دو گزینهٔ camlp4o\c \& (انتخاب نحو عادی)، یا camlp4r\c \& (انتخاب\c \& نحو بازنگری‌شده) مشخص شود.\c .RE .ft R .sp .RS "2m" .ft R -ppopt .ft I camlp4-arg\c .ft R .RE .ft R .sp .RS "7m" .ft R .ft R گزینه‌ای که مستقیماً به فراخوانی camlp4 ارسال می‌شود.\c .RE .ft R .PP .ft R.SH "زیردستور 'install' (THE 'install' SUBCOMMAND)" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ install\ [\ -destdir\ \c .ft I directory\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [\ -metadir\ \c .ft I directory\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [\ -ldconf\ \c .ft I path\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [\ -dont-add-directory-directive\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [\ -patch-version\ \c .ft I string\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [\ -patch-rmpkg\ \c .ft I name\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [\ -patch-archives\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [\ -dll\ ]\ [\ -nodll\ ]\ [\ -optional\ ]\ [\ -add\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \c .ft I package_name\c .ft B \&\ \c .ft I file\c .ft B \&\ ...\c .ft R .fi .SS "توضیحات (DESCRIPTION)" .ft R .ft R این زیردستور یک بسته جدید را یا در مکان پیش‌فرض\c \& (متغیر destdir\c \& از\c \& findlib.conf\c \& را ببینید)، یا در دایرکتوری مشخص‌شده با گزینه \-destdir نصب می‌کند. این\c \& بدان معناست که یک دایرکتوری بسته جدید ایجاد می‌شود و فایل‌های مشخص‌شده در\c \& خط فرمان به این دایرکتوری کپی می‌شوند. الزامی است که فایل\c \& META\c \& یکی از فایل‌های کپی‌شده به دایرکتوری مقصد باشد.\c .PP .ft R توجه داشته باشید که دایرکتوری‌های بسته باید هم‌سطح (بدون\c \& زیردایرکتوری) باشند. بسته‌های موجود هرگز بازنویسی نمی‌شوند.\c .PP .ft R امکان داشتن یک دایرکتوری مجزا برای تمام فایل‌های META وجود دارد. اگر\c \& چنین چیزی می‌خواهید، باید یا متغیر\c \& metadir\c \& از \& findlib.conf\c \& را تنظیم کنید، یا گزینه\c \& \-metadir را مشخص نمایید. در این حالت، فایلی به نام META به دایرکتوری\c \& مشخص‌شده کپی شده و نام آن به META.p تغییر می‌یابد (که در آن p نام\c \& بسته است)، در حالی که تمام فایل‌های دیگر طبق معمول به دایرکتوری بسته\c \& کپی می‌شوند. علاوه بر این، فایل META به گونه‌ای تغییر می‌یابد که متغیر\c \& directory\c \& حاوی مسیر دایرکتوری بسته باشد. .PP .ft R گزینه \-dont\-add\-directory\-directive مانع از افزودن متغیر\c \& directory\c \& توسط نصب‌کننده می‌شود.\c .PP .ft R اگر فایل‌هایی با پسوندهای\c \& \&.so\c \& یا\c \& \&.dll\c \& وجود داشته باشند، دایرکتوری بسته به فایل پیکربندی DLL یعنی\c \& ld.conf\c \& اضافه می‌شود، به‌گونه‌ای که بارگذار پویا\c \& بتواند DLL را پیدا کند. مکان این فایل می‌تواند توسط گزینه\c \& \-ldconf لغو و جایگزین شود. برای خاموش کردن این قابلیت، از \(lq\-ldconf ignore\(rq استفاده کنید؛\c \& این کار باعث می‌شود فایل ld.conf دست‌نخورده باقی بماند.\c .PP .ft R با این حال، اگر دایرکتوری stublibs در site-lib وجود داشته باشد، DLLها در\c \& دایرکتوری بسته نصب نمی‌شوند، بلکه در این دایرکتوری که بین تمام بسته‌های\c \& نصب‌شده در همان مکان مشترک است نصب می‌گردند.\c \& در این حالت، فایل پیکربندی ld.conf\c \& تغییر داده نمی‌شود، بنابراین اگر این شیوه نصب را ترجیح می‌دهید، نیازی نیست که از عبارت \(lq\-ldconf ignore\(rq استفاده کنید.\c .PP .ft R از گزینه‌های \-dll و \-nodll می‌توان برای کنترل دقیق اینکه کدام فایل‌ها\c \& به‌عنوان DLL در نظر گرفته شوند و کدام‌یک نشوند، استفاده کرد. به‌طور پیش‌فرض، قاعده\c \& پسوند ذکرشده برقرار است: فایل‌های با پسوند \(lq.so\(rq (یونیکس) یا \(lq.dll\(rq\c \& (ویندوز) DLL هستند. سوییچ \-dll این موضوع را تغییر می‌دهد، و تمام فایل‌های بعدی\c \& صرف‌نظر از پسوندشان، DLL محسوب می‌شوند. سوییچ \-nodll مشخص می‌کند که فایل‌های بعدی DLL نیستند، حتی اگر\c \& پسوندی مشابه DLL داشته باشند. برای نمونه، در فراخوانی زیر فایل‌های\c \& f1 و f2 با قاعده پسوند مدیریت می‌شوند؛ f3 و f4 در هر صورت DLL هستند؛\c \& و f5 و f6 نیز DLL محسوب نمی‌شوند:\c \& \& .PP .ft R .ft B .nf ocamlfind\ install\ p\ f1\ f2\ -dll\ f3\ f4\ -nodll\ f5\ f6\c .ft R .fi.PP .ft R سوییچ \-optional مشخص می‌کند که تمامی فایل‌های بعدی اختیاری هستند،\c \& بدین معنی که در صورت عدم وجود فایل‌ها، دستور با خطا مواجه نخواهد شد.\c .PP .ft R گزینه‌های \-patch می‌توانند برای تغییر محتوای فایل‌های META در زمان\c \& نصب استفاده شوند. گزینهٔ \-patch-version محتوای متغیر سطح بالای\c \& "version" را تغییر می‌دهد. گزینهٔ \-patch-rmpkg زیربستهٔ داده‌شده\c \& را حذف می‌کند. گزینهٔ \-patch-archives آزمایشی است،\c \& به‌ویژه تمام فایل‌های ناموجود را از متغیرهای "archive" حذف می‌کند،\c \& و حتی اگر بایگانی‌ها یافت نشوند، کل زیربسته‌ها را حذف خواهد کرد.\c .PP .ft R اثر \-add افزودن فایل‌های بیشتر به بسته‌های از پیش نصب‌شده\c \& است.\c .SH "زیرفرمان 'remove' (THE 'remove' SUBCOMMAND)" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ remove\ [\ -destdir\ \c .ft I directory\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [\ -metadir\ \c .ft I directory\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [\ -ldconf\ \c .ft I path\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \c .ft I package_name\c .ft B .ft R .fi .SS "توضیحات (DESCRIPTION)" .ft R .ft R بسته در صورتی که در مکان پیش‌فرض نصب شده باشد حذف خواهد شد\c \& (متغیر \c destdir\c \& از\c \& findlib.conf\c \& را ببینید). اگر بسته\c \& در مکان متفاوتی قرار داشته باشد، به‌طور پیش‌فرض حذف نخواهد شد؛\c \& با این حال، می‌توانید یک دایرکتوری جایگزین را برای بسته‌ها با استفاده از\c \& گزینهٔ \-destdir تعیین کنید. (این باید همان دایرکتوری مشخص‌شده هنگام\c \& نصب باشد.)\c .PP .ft R توجه داشته باشید که دایرکتوری‌های بسته باید مسطح باشند (فاقد زیردایرکتوری)؛ این\c \& زیرفرمان نمی‌تواند دایرکتوری‌های تو‌در‌تو (عمیق) بسته را حذف کند. .PP .ft R اگر دایرکتوری جداگانه‌ای برای فایل‌های META دارید، باید این\c \& دایرکتوری را یا از طریق متغیر \c metadir\c \& در\c \& findlib.conf\c \& پیکربندی کنید، یا با تعیین\c \& گزینهٔ \-metadir.\c .PP .ft R اگر بسته و/یا فایل META\c \& یافت نشود، این دستور با خطا خاتمه نمی‌یابد. در این حالت فقط یک هشدار دریافت خواهید کرد.\c .PP .ft R اگر نام دایرکتوری بسته در فایل پیکربندی \c ld.conf\c \& مربوط به DLLها آمده باشد، تلاش می‌شود که این مدخل از فایل حذف\c \& شود. مکان این فایل را می‌توان با گزینهٔ \-ldconf جایگزین کرد.\c \& برای غیرفعال کردن این ویژگی، از "-ldconf ignore" استفاده کنید؛\c \& این کار مانع از اصلاح فایل ld.conf می‌شود.\c .PP .ft R اگر دایرکتوری stublibs وجود داشته باشد، بررسی می‌شود که آیا بسته\c \& مالک هر یک از فایل‌های موجود در این دایرکتوری هست یا خیر، و فایل‌های متعلق به آن\c \& حذف خواهند شد.\c.SH "زیردستور 'list' (THE 'list' SUBCOMMAND)" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ list\ [-describe]\c .ft R .fi .SS "توضیحات (DESCRIPTION)" .ft R .ft R این دستور همهٔ بسته‌ها را در مسیر جستجو فهرست می‌کند. گزینهٔ -describe\c \& توضیحات بسته‌ها را نیز در خروجی نمایش می‌دهد.\c .SH "زیردستور 'printppx' (THE 'printppx' SUBCOMMAND)" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ printppx\c \& .br \&\ \ \ \ \ \ \ \ \ \ [\ -predicates\ \c .ft I pred-name-list\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ [\ -ppxopt\ \c .ft I package\c .ft B ,\c .ft I arg\c .ft B \&\ ]\c \& .br \&\ \ \ \ \ \ \ \ \ \ \c .ft I package\c .ft B \&\ ...\c .ft R .fi .SS "توضیحات (DESCRIPTION)" .ft R .ft R این دستور گزینه‌های پیش‌پردازندهٔ ppx را همان‌گونه که در یک\c \& فراخوانی کامپایلر OCaml برای بسته‌های فهرست‌شده در دستور ظاهر\c \& می‌شوند، چاپ می‌کند. خروجی شامل یک گزینهٔ "-ppx" برای هر\c \& پیش‌پردازنده است. گزینه‌های ممکن معنای یکسانی با گزینه‌های\c \& "ocamlfind ocamlc" دارند. گزینهٔ "-predicates" گزاره‌های مفروض\c \& را اضافه می‌کند و\c \& "-ppxopt .ft I package\c .ft R ,\c .ft I arg\c .ft R "\c \& مقدار "\c .ft I arg\c .ft R " را به فراخوانی ppx برای\c \& بستهٔ .ft I package\c .ft R \& می‌افزاید.\c .PP .ft R خروجی "ocamlfind printppx" برای دستورهای ppx که شامل\c \& آرگومان‌های جداشده با فاصله هستند، حاوی علامت نقل‌قول\c \& "\c "\c " خواهد بود. در این حالت $(ocamlfind\c \& printppx ...)\c \& آن‌طور که ساده‌انگارانه انتظار می‌رود کار نخواهد کرد، زیرا\c \& بسیاری از پوسته‌ها (از جمله bash و dash) تفکیک فیلد را روی\c \& نتیجهٔ جایگزینی‌های دستور، بدون رعایت علامت‌های نقل‌قول انجام می‌دهند.\c.SH "زیردستور 'lint' (THE 'lint' SUBCOMMAND)" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ lint\ \c .ft I file\c .ft B .ft R .fi .SS "توضیحات (DESCRIPTION)" .ft R .ft R فایل META را بررسی کرده و مشکلات احتمالی را گزارش می‌دهد.\c .SH "زیردستور 'printconf' (THE 'printconf' SUBCOMMAND)" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ printconf\ [\ conf\ |\ path\ |\ destdir\ |\ metadir\ |\ metapath\ |\ stdlib\ |\ ldconf\ ]\c .ft R .fi .SS "توضیحات (DESCRIPTION)" .ft R .ft R این دستور پیکربندی مؤثر را پس از خواندن فایل\c \& پیکربندی و پس از اعمال متغیرهای محیطی گوناگونی که\c \& تنظیمات را بازنویسی می‌کنند، چاپ می‌کند. هنگامی که بدون آرگومان فراخوانی شود، دستور\c \& تمام گزینه‌های پیکربندی را به شکلی انسان‌خوان چاپ می‌کند. هنگامی که\c \& با یک آرگومان فراخوانی شود، تنها مقدار گزینه درخواستی بدون\c \& متن‌های توضیحی چاپ می‌شود:\c .PP .ft R .RS "2m" .ft R conf\c .RE .ft R .sp .RS "7m" .ft R .ft R مکان فایل پیکربندی findlib.conf را چاپ می‌کند\c \& \& .RE .ft R .sp .RS "2m" .ft R path\c .RE .ft R .sp .RS "7m" .ft R .ft R مسیر جستجو برای بسته‌ها را چاپ می‌کند. اعضای این\c \& \& مسیر با خط جدید (linefeed) از یکدیگر جدا می‌شوند.\c .RE .ft R .sp .RS "2m" .ft R destdir\c .RE .ft R .sp .RS "7m" .ft R .ft R مکانی را که بسته‌ها به‌طور پیش‌فرض در آن نصب و\c \& \& حذف می‌شوند چاپ می‌کند.\c .RE .ft R .sp .RS "2m" .ft R metadir\c .RE .ft R .sp .RS "7m" .ft R .ft R مکانی را که فایل‌های META در آن نصب و\c \& \& حذف می‌شوند (در صورت استفاده از چینش جایگزین) چاپ می‌کند.\c .RE .ft R .sp .RS "2m" .ft R metapath\c .RE .ft R .sp .RS "7m" .ft R .ft R مسیری را که فایل META برای\c \& یک بسته فرضی در آن نصب می‌شود چاپ می‌کند. نام بسته در مسیر با '%s' مشخص\c \& شده است. برای نمونه، این دستور بسته به نحوه چینش می‌تواند "/some/path/%s/META" یا\c \& "/some/path/META.%s" را خروجی دهد.\c .RE .ft R .sp .RS "2m" .ft R stdlib\c .RE .ft R .sp .RS "7m" .ft R .ft R مکان کتابخانه استاندارد را چاپ می‌کند.\c .RE .ft R .sp .RS "2m" .ft R ldconf\c .RE .ft R .sp .RS "7m" .ft R .ft R مکان فایل ld.conf را چاپ می‌کند\c .RE .ft R .PP .ft R.SH "زیرفرمان فراخوانی برنامه‌های بسته (THE SUBCOMMAND CALLING PACKAGE PROGRAMS)" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ \c .ft I pkg\c .ft B /\c .ft I cmd\c .ft B \&\ \c .ft I argument\c .ft B \&\ ...\c .ft R .fi .SS "توضیحات (DESCRIPTION)" .ft R .ft R این زیرفرمان برای فراخوانی برنامه‌هایی که در\c \& دایرکتوری‌های بسته نصب شده‌اند مفید است. دایرکتوری مربوط به \& .ft I pkg\c .ft R \& را جستجو کرده و دستور با نام\c \& .ft I cmd\c .ft R \& در این دایرکتوری را فراخوانی می‌کند. آرگومان‌های باقی‌مانده\c \& به این دستور ارسال می‌شوند.\c .PP .ft R مقدار argv(0) حاوی مسیر مطلق به دستور است، و argv(1) و\c \& مدخل‌های بعدی argv شامل آرگومان‌ها هستند. دایرکتوری کاری\c \& تغییر نمی‌کند.\c .PP .ft R مثال: برای فراخوانی برنامه "x" که در بسته "p" نصب شده است،\c \& با آرگومان‌های "y" و "z"، اجرا کنید:\c .PP .ft R .ft B .nf ocamlfind\ p/x\ y\ z\c .ft R .fi .SH "فایل پیکربندی، متغیرهای محیطی (CONFIGURATION FILE, ENVIRONMENT VARIABLES)" .ft R .ft R فایل پیکربندی و متغیرهای محیطی در صفحهٔ راهنمای\c \& findlib.conf\c \& مستند شده‌اند.\c .SH "نحوه تنظیم زنجیره‌ابزار (HOW TO SET THE TOOLCHAIN)" .ft R .SS "خلاصه دستور (SYNOPSIS)" .ft R .ft R .ft B .nf ocamlfind\ -toolchain\ \c .ft I name\c .ft B \&\ ...\c .ft R .fi.SS "توضیحات (Description)" .ft R .ft R گزینهٔ -toolchain می‌تواند پیش از هر دستور دیگری مشخص شود،\c \& برای نمونه:\c \& .PP .ft R .ft B .nf ocamlfind\ -toolchain\ foo\ ocamlc\ -c\ file.ml\c .ft R .fi \& فایل file.ml را با زنجیره‌ابزار "foo" کامپایل می‌کند. با گزینش زنجیره‌ابزارها می‌توان\c \& به مجموعه‌دستورهای متفاوتی جابه‌جا شد. برای نمونه، زنجیره‌ابزار\c \& "foo" ممکن است شامل یک کامپایلر وصله‌شدهٔ ocamlc باشد. \& برای نحوهٔ پیکربندی زنجیره‌ابزارها، findlib.conf\c \& را\c \& ببینید.\c