ocamlfind(1) General Commands Manual ocamlfind(1)

ocamlfind - رابط خط فرمان مدیر بسته

       ocamlfind query [-help | other options] 
package_name
 ...

   یا: ocamlfind ocamlc [-help | other options] 
file
 ...

   یا: ocamlfind ocamlcp [-help | other options] 
file
 ...

   یا: ocamlfind ocamlmktop [-help | other options] 
file
 ...

   یا: ocamlfind ocamlopt [-help | other options] 
file
 ...

   یا: ocamlfind ocamldoc [-help | other options] 
file
 ...

   یا: ocamlfind ocamldep [-help | other options] 
file
 ...

   یا: ocamlfind ocamlmklib [-help | other options] 
file
 ...

   یا: ocamlfind ocamlbrowser [-help | other options]
   یا: ocamlfind install [-help | other options] 
package_name
 
file
 ...

   یا: ocamlfind remove [-help | other options] 
package_name

   یا: ocamlfind lint 
META

   یا: ocamlfind list [-describe]
   یا: ocamlfind printppx [-help | other options] 
package_name
 ...

   یا: ocamlfind printconf [ variable ]
   یا: ocamlfind 
package
/
command
 
arg
 ...

انتخاب اختیاری زنجیره ابزار با:
  ocamlfind -toolchain 
name
 ...

ocamlfind query [ -predicates 
p
  | 

                  -format 
f
 |

                  -long-format | -l |
                  -i-format |
                  -l-format | 
                  -a-format |
                  -o-format | 
                  -p-format |
                  -prefix 
p
 |

                  -separator 
s
 | 

                  -suffix 
s
 |

                  -pp |
                  -descendants | -d |
                  -recursive  | -r
                  -qe | -qo] 
package
 ...

این دستور بسته‌ها را جستجو می‌کند، در صورت تمایل آن‌ها را مرتب می‌سازد و ویژگی‌هایشان را چاپ می‌کند. اگر گزینهٔ -recursive (کوتاه: -r) مشخص نشده باشد، دقیقاً همان بسته‌های ارائه‌شده در خط فرمان جستجو می‌شوند؛ اگر -recursive مشخص شده باشد، بسته‌ها و تمام نیاکان آن‌ها، یا اگر -descendants (کوتاه: -d) نیز مشخص شده باشد، تمام نوادگان آن‌ها چاپ می‌شوند.

جستجوی بسته‌ها و انتخاب ویژگی‌های بسته‌ها را می‌توان با تعیین گزاره‌ها تغییر داد؛ بدون گزینهٔ -predicates، مجموعهٔ تهی از گزاره‌ها استفاده می‌شود. توجه داشته باشید که حتی جستجو نیز تحت تأثیر مجموعهٔ گزاره‌های واقعی قرار می‌گیرد، زیرا متغیرهای "requires" ممکن است شرطی باشند.

آنچه دربارهٔ یک بسته چاپ می‌شود به قالب مشخص‌شده بستگی دارد؛ چندین گزینه وجود دارند که قالب را تغییر می‌دهند. برخی قالب‌ها نشان‌دهندهٔ مجموعه‌ای از مقادیر هستند (مانند -format %a)، که در این صورت چندین رکورد خروجی برای هر بسته چاپ می‌شود. (حتی می‌توان قالب‌هایی را مشخص کرد که نشان‌دهندهٔ حاصل‌ضرب دکارتی مجموعه‌ها باشند، مانند -format %a%o، اما این کار بی‌معنی است.) پیش از نخستین رکورد خروجی، پیشوند و پس از آخرین رکورد، پسوند چاپ می‌شود. بین دو رکورد نیز جداکننده چاپ می‌گردد..SS "گزینه‌ها (Options)"

-predicates p
مجموعه گزاره‌های واقعی را تنظیم می‌کند. آرگومان p فهرستی از نام‌های گزاره است که با کاما و/یا فاصله از هم جدا شده‌اند. اگر چندین گزینه -predicates داده شده باشد، اجتماع تمام مجموعه‌های تعیین‌شده استفاده می‌شود.
-format f
قالب را به رشته f تنظیم می‌کند. نویسه‌هایی که پیش از آن‌ها علامت درصد آمده است به‌عنوان جای‌نگه‌دار تفسیر می‌شوند؛ تمام نویسه‌های دیگر معنای خودشان را دارند. جای‌نگه‌دارهای تعریف‌شده در زیر فهرست شده‌اند. قالب پیش‌فرض "%d" است.
-long-format یا -l
قالب را به‌گونه‌ای تنظیم می‌کند که تمام متغیرهای مرتبط چاپ شوند.
-i-format
مشابه -format "-I %d"، یعنی گزینه‌های دایرکتوری برای ocamlc چاپ می‌شوند.
-l-format
مشابه -format "-ccopt -L%d"، یعنی گزینه‌های دایرکتوری برای بک‌اند پیونددهنده چاپ می‌شوند.
-a-format
مشابه -format "%+a"، یعنی نام فایل‌های آرشیو چاپ می‌شوند.
-o-format
مشابه -format "%o"، یعنی گزینه‌های پیونددهنده چاپ می‌شوند.
-p-format
مشابه -format "%p"، یعنی نام بسته‌ها چاپ می‌شوند.
-prefix p
پیشوندی را که قبل از اولین رکورد خروجی چاپ می‌شود به رشته داده‌شده تنظیم می‌کند. پیشوند پیش‌فرض رشته خالی است.
-suffix s
پسوندی را که بعد از آخرین رکورد خروجی چاپ می‌شود به رشته داده‌شده تنظیم می‌کند. پسوند پیش‌فرض رشته خالی است.
-separator s
جداکننده‌ای که بین رکوردهای خروجی چاپ می‌شود را روی رشته داده‌شده تنظیم می‌کند. جداکننده پیش‌فرض یک نویسه خط جدید (linefeed) است.
-recursive یا -r
نه تنها بسته‌های داده‌شده در خط فرمان پرس‌وجو می‌شوند، بلکه تمامی نیاکان یا نوادگان نیز بررسی می‌شوند. اگر گزینه -descendants نیز مشخص شده باشد، نوادگان چاپ می‌شوند، در غیر این صورت نیاکان. بسته‌ها به‌صورت توپولوژیکی مرتب می‌شوند.
-descendants -d
به جای نیاکان، نوادگان بسته‌های داده‌شده پرس‌وجو می‌شوند. این گزینه متضمن -recursive است.
-pp
پرس‌وجوی بسته‌های پیش‌پردازنده (افزونه‌های نحو camlp4). به‌طور معمول نیازی به تنظیم -predicates نیست، مگر اینکه به بایگانی‌ها نیاز داشته باشید (در این صورت -predicates byte را اضافه کنید). این گزینه متضمن -recursive است.
-qe
بیشتر خطاها را در stderr چاپ نمی‌کند، فقط کد خروج را تنظیم می‌کند
-qo
خروجی عادی را چاپ نمی‌کند.
%%
با یک علامت درصد تکی جایگزین می‌شود
%p
با نام بسته جایگزین می‌شود
%d
با دایرکتوری بسته جایگزین می‌شود
%m
با مسیر فایل META جایگزین می‌شود (جدید از findlib-1.6)
%D
با توضیحات بسته جایگزین می‌شود
%v
با رشته نسخه جایگزین می‌شود
%a
با نام فایل آرشیو جایگزین می‌شود. اگر بیش از یک آرشیو وجود داشته باشد، یک رکورد خروجی جداگانه برای هر آرشیو چاپ می‌شود.
%+a
مانند %a، اما نام فایل‌ها به مسیرهای مطلق تبدیل می‌شوند (نشانه‌گذاری‌های "+" و "@" حل می‌شوند)
%A
با فهرست نام فایل‌های آرشیو جایگزین می‌شود.
%+A
مانند %A، اما نام فایل‌ها به مسیرهای مطلق تبدیل می‌شوند (نشانه‌گذاری‌های "+" و "@" حل می‌شوند)
%o
با یک گزینه لینکر جایگزین می‌شود. اگر بیش از یک گزینه وجود داشته باشد، یک رکورد خروجی جداگانه برای هر گزینه چاپ می‌شود.
%O
با فهرست گزینه‌های لینکر جایگزین می‌شود.
%(property)
با مقدار ویژگی نام‌برده‌شده در پرانتز، یا در صورت تعریف نشدن با یک رشته خالی جایگزین می‌شود.

ocamlfind ( ocamlc | ocamlcp | ocamlopt | ocamlmktop )
          [ -package 
package-name-list
 |

            -linkpkg |
            -predicates 
pred-name-list
 |

            -dontlink 
package-name-list
 |

            -syntax 
pred-name-list
 |

            -ppopt 
camlp4-arg
 |

            -ppxopt 
package
,
arg
 |

            -dllpath-pkg 
package-name-list
 |

            -dllpath-all |
            -passopt 
arg
 |

            -passrest 
arg...
 |

            -only-show |
            
standard-option
 ]

          
file
 ...
این زیردستورها راه‌اندازهایی برای کامپایلرهایی با همین نام هستند،

بدین معنی که "ocamlfind ocamlc" یک راه‌انداز برای "ocamlc" است و به همین ترتیب. این

زیردستورها تمام گزینه‌های مستندشدهٔ کامپایلرها را درک می‌کنند (که در اینجا 
standard-options
نامیده می‌شوند)، اما همچنین چند

گزینهٔ بیشتر را نیز می‌شناسند. اگر این زیردستورها تنها با گزینه‌های استاندارد

فراخوانی شوند، همانند زمانی رفتار می‌کنند که کامپایلرِ زیرین مستقیماً

فراخوانی شده باشد. گزینه‌های اضافی این رفتار را تغییر می‌دهند.
درون سیستم، این زیردستورها فهرست ارائه‌شده از گزینه‌ها و آرگومان‌های

فایل را به فراخوانی کامپایلرِ هدایت‌شده تبدیل می‌کنند. این تبدیل

صرفاً گزینه‌ها و فایل‌هایی را می‌افزاید، و ترتیب نسبیِ

گزینه‌ها و فایل‌های مستقیماً ارائه‌شده بدون تغییر باقی می‌ماند.
اگر گزینه‌های -package وجود داشته باشند، مشخص‌کننده‌های جستجوی دایرکتوری اضافی

لحاظ خواهند شد ("-I" و "-ccopt -I")، به‌گونه‌ای که فایل‌های تمام بسته‌های نام‌برده

و همهٔ نیاکان (اجداد) آن‌ها قابل یافتن باشند.
گزینه -linkpkg باعث می‌شود بسته‌های فهرست‌شده در گزینه‌های -package

و تمام نیاکان مورد نیاز پیوند داده شوند. این بدان معناست که

فایل‌های آرشیو پیاده‌سازی‌کنندهٔ بسته‌ها در فهرست آرگومان‌های فایل

درج می‌شوند.
از آنجا که پایگاه‌دادهٔ بسته پرس‌وجو می‌شود، مجموعه‌ای از مسندها (predicates) مورد نیاز است. بیشتر

مسندها به‌طور خودکار تنظیم می‌شوند (به پایین مراجعه کنید)، اما مسندهای دیگر

می‌توانند توسط گزینه -predicates مشخص شوند.
اگر گزینه 
-syntax
 وجود داشته باشد، راه‌اندازها فرض می‌کنند که باید

از یک پیش‌پردازنده استفاده شود. در این صورت، دستور پیش‌پردازنده ابتدا

در مرحله پیش‌پردازنده ساخته می‌شود و این دستور با استفاده از گزینه 
-pp
 به کامپایلر منتقل می‌گردد. مجموعه مسندها

در مرحله پیش‌پردازنده با مجموعه موجود در مرحله کامپایلر/پیونددهنده

متفاوت است.

در اینجا تنها گزینه‌های اضافی که توسط کامپایلر تفسیر نمی‌شوند بلکه توسط خود راه‌انداز تفسیر می‌گردند، و گزینه‌های دارای اثرات اضافی توضیح داده شده‌اند. برخی گزینه‌ها صرفاً برای فراخوانی پیش‌پردازنده معنا دارند و در ادامه توضیح داده می‌شوند.

-package package-name-list
نام‌های بسته‌های فهرست‌شده را به مجموعه بسته‌های گنجانده‌شده اضافه می‌کند. نام‌های بسته می‌توانند با کاما و/یا فاصله سفید (whitespace) از یکدیگر جدا شوند. در دستور تبدیل‌شده، برای هر بسته از مجموعه بسته‌های گنجانده‌شده و هر نیاک (اجداد)، یک گزینه جستجوی دایرکتوری پس از گزینه‌های از پیش داده‌شده درج می‌شود. این بدان معناست که گزینه‌های "-I" و "-ccopt -I" برای دایرکتوری هر بسته اضافه می‌گردند.
-linkpkg
باعث می‌شود که در دستور تبدیل‌شده، تمام آرشیوهای بسته‌های مشخص‌شده با -packages و تمام نیاکان آن‌ها به آرگومان‌های فایل اضافه شوند. دقیق‌تر، این آرشیوها پیش از نخستین آرگومان فایلِ داده‌شده درج می‌شوند. افزون بر این، گزینه‌های "-ccopt -L" برای تمام دایرکتوری‌های بسته‌ها و نیز گزینه‌های پیونددهندهٔ بسته‌های انتخاب‌شده اضافه می‌گردند. توجه داشته باشید که آرشیوها به ترتیب توپولوژیکی درج می‌شوند، در حالی که گزینه‌های پیونددهنده به ترتیب توپولوژیکی معکوس افزوده می‌شوند.
-predicates pred-name-list
مسندهای داده‌شده را به مجموعه مسندهای واقعی اضافه می‌کند. مسندها باید با کاما و/یا فاصله سفید از یکدیگر جدا شوند.
-dontlink package-name-list
این گزینه رفتار -linkpkg را تغییر می‌دهد. بسته‌های مشخص‌شده در اینجا و تمام نیاکان آن‌ها پیوند داده نمی‌شوند. باز هم بسته‌ها با کاما و/یا فاصله سفید از یکدیگر جدا می‌شوند.
-dllpath-pkg package-name-list
برای این بسته‌ها، گزینه‌های -dllpath به دستور کامپایلر اضافه می‌شوند. این ویژگی ممکن است زمانی که فایل ld.conf به‌درستی پیکربندی نشده است، مفید واقع شود.
-dllpath-all
برای تمامی بسته‌های پیوندشده، گزینه‌های -dllpath به دستور کامپایلر اضافه می‌شوند. این ویژگی ممکن است زمانی که فایل ld.conf به‌درستی پیکربندی نشده است، مفید واقع شود.
-passopt arg
آرگومان arg مستقیماً به کامپایلر زیرین ارسال می‌شود. این گزینه برای تعیین گزینه‌های مستندنشده کامپایلر لازم است.
-passrest arg...
همه آرگومان‌های پس از آن arg... مستقیماً به کامپایلر زیرین فرستاده می‌شوند. این گزینه برای مشخص کردن گزینه‌های مستندنشده کامپایلر لازم است.
-only-show
تنها دستور ساخته‌شده (ocamlc/ocamlopt) را در خروجی استاندارد (stdout) چاپ می‌کند، اما آن را اجرا نمی‌کند. (این برای موارد نادری است که به یک پوشش پیرامون ocamlfind نیاز داشته باشید.)
-verbose
این گزینه استاندارد توسط گرداننده (driver) نیز تفسیر می‌شود.
-thread
این گزینه استاندارد باعث می‌شود که گزاره "mt" به مجموعه گزاره‌های کنونی اضافه شود. اگر ریسه‌های POSIX در دسترس باشند، گزاره "mt_posix" نیز انتخاب می‌شود. اگر فقط ریسه‌های VM در دسترس باشند، گزاره "mt_vm" به مجموعه اضافه شده و سوییچ کامپایلر به -vmthread تغییر می‌یابد.

توجه داشته باشید که وجود گزاره "mt" موجب اصلاح ویژه گراف وابستگی می‌شود (پایین را ببینید).

-vmthread
این گزینه استاندارد باعث می‌شود گزاره‌های "mt" و "mt_vm" به مجموعه گزاره‌های کنونی اضافه شوند.

توجه داشته باشید که وجود گزاره "mt" موجب اصلاح ویژه گراف وابستگی می‌شود (پایین را ببینید).

-p
این گزینه استاندارد "ocamlopt" باعث می‌شود که گزاره "gprof" به مجموعه گزاره‌های کنونی افزوده شود.

گزینه‌های مربوط به پیش‌پردازنده به شرح زیر هستند:

-package package-name-list
این بسته‌ها هنگام جستجوی آرگومان‌های پیش‌پردازنده در نظر گرفته می‌شوند. (اینکه از همان گزینه -package برای این منظور استفاده می‌شود مشکلی ایجاد نمی‌کند، زیرا مجموعه گزاره‌ها متفاوت است.) در صورتی که قرار است از پیش‌پردازنده استفاده شود، توصیه می‌شود حداقل camlp4 در اینجا ذکر شود.
-syntax pred-name-list
این گزاره‌ها علاوه بر گزاره‌های استاندارد پیش‌پردازنده، درست فرض می‌شوند. برای مشاهده فهرست به ادامه مراجعه کنید.
-ppopt camlp4-arg
این آرگومان به فراخوانی camlp4 ارسال می‌شود.
-ppxopt package,arg
افزودن arg به فراخوانی پیش‌پردازنده ppx که از طریق ویژگی "ppx" در فایل META مربوط به package مشخص شده است.
byte
گزارهٔ «byte» بدین معناست که یکی از کامپایلرهای بایت‌کد (bytecode) به کار رفته است. در صورتی که از کامپایلر «ocamlc»، «ocamlcp» یا «ocamlmktop» استفاده شود، این گزاره به‌طور خودکار در مجموعه گزاره‌ها گنجانده می‌شود.
native
گزارهٔ «native» بدین معناست که کامپایلر بومی استفاده شده است. در صورتی که از کامپایلر «ocamlopt» استفاده شود، به‌طور خودکار در مجموعه گزاره‌ها گنجانده می‌شود.
toploop
گزارهٔ «toploop» بدین معناست که toploop در برنامهٔ پیوند خورده در دسترس است. این گزاره تنها زمانی تنظیم می‌شود که toploop در عمل در حال اجرا باشد، نه هنگامی که toploop ایجاد می‌شود (این رفتار در نسخهٔ 1.0.4 از findlib تغییر کرد).
create_toploop
این گزاره بدین معناست که یک toploop (با استفاده از ocamlmktop) در حال ایجاد شدن است.
mt
گزارهٔ «mt» بدین معناست که برنامه چندریسمانی است. در صورتی که گزینهٔ -thread داده شده باشد، به‌طور خودکار در مجموعه گزاره‌ها گنجانده می‌شود.
mt_posix
گزارهٔ «mt_posix» بدین معناست که در صورت تنظیم بودن «mt»، کتابخانه‌های POSIX برای پیاده‌سازی ریسمان‌ها به کار می‌روند. اگر متغیر «type_of_threads» در شرح META بستهٔ «threads» مقدار «posix» داشته باشد، «mt_posix» به‌طور خودکار در مجموعه گزاره‌ها گنجانده می‌شود. این حالت معمولاً در صورتی رخ می‌دهد که «findlib» برای ریسمان‌های POSIX پیکربندی شده باشد.
mt_vm
گزارهٔ «mt_vm» بدین معناست که در صورت تنظیم بودن «mt»، از شبیه‌سازی ریسمان VM برای پیاده‌سازی چندریسمانی استفاده می‌شود.
gprof
گزارهٔ «gprof» بدین معناست که در صورت تنظیم بودن «native»، برنامه برای پروفایل‌گیری کامپایل می‌شود. در صورتی که «ocamlopt» استفاده شود و گزینهٔ -p اعمال شده باشد، به‌طور خودکار در مجموعه گزاره‌ها گنجانده می‌شود.
autolink
گزارهٔ «autolink» بدین معناست که ocamlc توانایی انجام پیوند خودکار را دارد. اگر ocamlc پیوند خودکار را بشناسد (از نسخهٔ 3.00)، این گزاره به‌طور خودکار در مجموعه گزاره‌ها قرار می‌گیرد، اما اگر گزینهٔ -noautolink تنظیم شده باشد، مقداردهی نمی‌شود.
syntax
این گزاره در صورتی که گزینهٔ -syntax وجود داشته باشد تنظیم می‌شود. این گزاره هم برای مرحلهٔ پیش‌پردازنده و هم کامپایلر/پیونددهنده تنظیم می‌شود، و می‌توان از آن برای تشخیص فعال بودن یا نبودن پیش‌پردازنده استفاده کرد.

preprocessor
این گزاره همواره هنگام بررسی آرگومان‌های پیش‌پردازنده تنظیم می‌شود. می‌توان از آن برای تمایز بین مرحلهٔ پیش‌پردازنده و مرحلهٔ کامپایلر/پیونددهنده استفاده کرد.
syntax
این گزاره در صورت وجود گزینهٔ -syntax تنظیم می‌شود. این گزاره هم برای مرحلهٔ پیش‌پردازنده و هم برای مرحلهٔ کامپایلر/پیونددهنده تنظیم می‌شود، و می‌توان از آن برای تشخیص فعال بودن یا نبودن پیش‌پردازنده استفاده کرد.
camlp4o
این گزارهٔ رزروشده برای نحو استاندارد OCaml است. می‌توان از آن در فهرست گزاره‌های -syntax استفاده کرد.
camlp4r
این گزارهٔ رزروشده برای نحو بازنگری‌شدهٔ OCaml است. می‌توان از آن در فهرست گزاره‌های -syntax استفاده کرد.

از آنجا که ماژول ویژه Topfind وجود دارد که از بارگذاری بسته‌ها در اسکریپت‌ها پشتیبانی می‌کند، زیرفرمان "ocamlmktop" می‌تواند کد مقداردهی اولیه را برای این ماژول بیفزاید. این کد اضافی در صورتی در فایل اجرایی پیوند داده می‌شود که "findlib" در مجموعه بسته‌های به‌طور مؤثر پیوندخورده قرار داشته باشد.

به دلایل متعددی، وجود گزاره "mt" باعث می‌شود که (۱) بسته "threads" به فهرست بسته‌های موردنیاز افزوده شود و (۲) بسته "threads" پیش‌نیاز همه بسته‌های دیگر گردد (به‌جز خودش و چند استثنای درون‌کدی). تأثیر این امر آن است که گزینه‌های -thread و -vmthread به‌طور خودکار بسته "threads" را انتخاب می‌کنند، و "threads" در جایگاه درست در فهرست بسته‌ها درج می‌شود.

در بخش‌های متعددی، نه‌تنها می‌توان با نام‌های مسیر مطلق یا نسبی به فایل‌ها ارجاع داد، بلکه می‌توان از نام‌های گسترش‌یافته نیز بهره برد. این نام‌ها دو شکل اصلی دارند: "+name" به زیردایرکتوری name از دایرکتوری کتابخانه استاندارد اشاره دارد، و "@name" به دایرکتوری بسته name اشاره می‌کند. هر دو شکل می‌توانند با یک مسیر ادامه یابند، مانند "@netstring/netstring_top.cma".

می‌توانید از نام‌های گسترش‌یافته استفاده کنید: (۱) با گزینه‌های -I، (۲) به عنوان آرگومان‌های معمولی فایل در کامپایلر، (۳) در ویژگی "archive" بسته‌ها.

به‌طور معمول، کامپایلر بایت‌کد OCaml را می‌توان با نام ocamlc فراخوانی کرد. با این حال، همیشه این‌طور نیست؛ گاهی اوقات یک نام متفاوت انتخاب می‌شود.

می‌توانید به ocamlfind دستور دهید فایل‌های اجرایی را با نام‌هایی غیر از ocamlc، ocamlopt، ocamlmktop و ocamlcp فراخوانی کند. در صورت وجود، متغیر محیطی OCAMLFIND_COMMANDS به عنوان یک نگاشت از نام‌های استاندارد به نام‌های واقعی فایل‌های اجرایی تفسیر می‌شود. این متغیر باید قالب زیر را داشته باشد:

standardname1
=
actualname1
 
standardname2
=
actualname2
 ...

مثال: می‌توانید OCAMLFIND_COMMANDS را به صورت زیر تنظیم کنید:

OCAMLFIND_COMMANDS='ocamlc=ocamlc-3.00 ocamlopt=ocamlopt-3.00'
export OCAMLFIND_COMMANDS

همچنین، می‌توانید فایل پیکربندی findlib.conf را تغییر دهید..SH "زیرفرمان 'ocamlmklib' (THE SUBCOMMAND 'ocamlmklib')"

ocamlfind ocamlmklib
          [ -package 
package-name-list
 |

            -predicates 
pred-name-list
 |

            -dllpath-pkg 
package-name-list
 |

            -dllpath-all |
            -passopt 
arg
 |

            -passrest 
arg...
 |

            
standard-option
 ]

            
file
 ...

این دستور یک پوشش (wrapper) پیرامون ocamlmklib است و بایگانی‌های کتابخانه و DLLها را ایجاد می‌کند. علاوه بر گزینه‌های استاندارد، می‌توان از -package برای افزودن مسیر جستجوی بسته‌ها استفاده کرد. توجه داشته باشید که به‌طور پیش‌فرض هیچ گزاره‌ای (predicate) تنظیم نشده است - این پوشش نمی‌داند که این پیوند مربوط به کد بایتی (bytecode) است یا کد بومی (native code).

این پوشش عمدتاً برای کامل بودن ارائه شده است.

ocamlfind ocamldep [-package 
package-name-list
 |

                    -syntax 
pred-name-list
 |

                    -ppopt 
camlp4-arg
 |

                    -passopt 
arg
 |

                    -passrest 
arg...
 |

                    -verbose |
                    
standard-option
] 
file
 ...
این دستور یک راه‌انداز برای ابزار 
ocamldep
 از توزیع

OCaml است. این راه‌انداز تنها در ترکیب با

پیش‌پردازنده camlp4 سودمند است؛ در غیر این صورت قابلیت‌های بیشتری نسبت به خود 
ocamldep
 ارائه نمی‌دهد.

در اینجا، تنها گزینه‌های اضافی که توسط ocamldep تفسیر نمی‌شوند بلکه توسط خود راه‌انداز پردازش می‌گردند، و گزینه‌هایی با اثرات اضافی توضیح داده شده‌اند.

-package package-name-list
بسته‌های نام‌برده در اینجا فقط برای یافتن گزینه‌های پیش‌پردازنده استفاده می‌شوند. بسته camlp4 در هر صورت باید مشخص شود، اما بسته‌های بیشتری که قابلیت‌هایی به پیش‌پردازنده می‌افزایند نیز می‌توانند ارسال شوند.
-syntax pred-name-list
گزاره‌هایی که هنگام جست‌وجوی گزینه‌های پیش‌پردازنده مؤثر هستند. دست‌کم باید یکی از camlp4o (انتخاب نحو عادی)، یا camlp4r (انتخاب نحو بازنگری‌شده) مشخص شود.
-ppopt camlp4-arg
گزینه‌ای که مستقیماً به فراخوانی camlp4 منتقل می‌شود.
-passopt arg
گزینه‌ای که مستقیماً به فراخوانی ocamldep منتقل می‌شود.
-passrest arg...
تمام آرگومان‌های بعدی بدون پردازش به ocamldep تحویل داده می‌شوند
-verbose
دستور نهایی ocamldep را نمایش می‌دهد (برای اشکال‌زدایی)

یک روش معمول برای استفاده از این گرداننده:

ocamlfind ocamldep -package camlp4,xstrp4 -syntax camlp4r file1.ml file2.ml
این دستور وابستگی‌های file1.ml و file2.ml را در خروجی نمایش می‌دهد، هرچند این ماژول‌ها از افزونه‌های نحوی ارائه‌شده توسط xstrp4 استفاده می‌کنند و با نحو بازبینی‌شده (revised syntax) نوشته شده‌اند.

ocamlfind ocamlbrowser [-package 
package-name-list
 |

                        -all |
                        -passopt 
arg
 

                        -passrest ]

این گرداننده ocamlbrowser را با گزینه‌های بسته فراخوانی می‌کند. با -package، بسته‌های مشخص‌شده در مسیر جستجوی مرورگر گنجانده می‌شوند و ماژول‌های این بسته‌ها (علاوه بر کتابخانهٔ استاندارد) قابل مشاهده می‌گردند. گزینهٔ -all باعث می‌شود تمام بسته‌هایی که توسط findlib مدیریت می‌شوند، انتخاب گردند.

همانند سایر گرداننده‌ها، گزینه‌های -passopt و -passrest می‌توانند برای ارسال مستقیم آرگومان‌ها به برنامهٔ ocamlbrowser استفاده شوند..SH "زیردستور 'ocamldoc' (THE SUBCOMMAND 'ocamldoc')"

ocamlfind ocamldoc
          [ -package 
package-name-list
 |

            -predicates 
pred-name-list
 |

            -syntax 
pred-name-list
 |

            -ppopt 
camlp4-arg
 |

            
standard-option
 ]

          
file
 ...

این زیردستور یک گرداننده برای ocamldoc است. این دستور تمام گزینه‌هایی را که ocamldoc پشتیبانی می‌کند، به‌همراه گزینه‌های ذکرشدهٔ findlib درک می‌کند. اساساً، گزینه‌های -package به گزینه‌های -I، و گزینه‌های نحو (syntax) انتخاب‌شده به گزینه‌های camlp4 ترجمه می‌شوند.

در اینجا، تنها گزینه‌های اضافی که توسط ocamldep تفسیر نمی‌شوند بلکه توسط خود گرداننده پردازش می‌شوند، و گزینه‌های دارای اثرات مضاعف توضیح داده شده‌اند.

-package package-name-list
نام بسته‌های فهرست‌شده را به مجموعهٔ بسته‌های گنجانده‌شده اضافه می‌کند. نام بسته‌ها می‌توانند با کاما و/یا فاصله از یکدیگر جدا شوند. در دستور دگرگون‌شده، برای هر بسته از مجموعهٔ بسته‌های گنجانده‌شده و برای هر نیا، یک گزینهٔ جستجوی دایرکتوری بعد از گزینه‌های داده‌شده درج می‌شود. این بدان معناست که گزینه‌های "-I" برای دایرکتوری هر بسته اضافه می‌شوند.
-predicates pred-name-list
محمول‌های ارائه‌شده را به مجموعهٔ محمول‌های واقعی (actual) اضافه می‌کند. محمول‌ها باید با کاما و/یا فاصله از یکدیگر جدا شوند.
-syntax pred-name-list
محمول‌هایی که در طول جستجوی گزینه‌های پیش‌پردازنده نافذ هستند. حداقل باید یکی از دو گزینهٔ camlp4o (انتخاب نحو عادی)، یا camlp4r (انتخاب نحو بازنگری‌شده) مشخص شود.
-ppopt camlp4-arg
گزینه‌ای که مستقیماً به فراخوانی camlp4 ارسال می‌شود.

ocamlfind install [ -destdir 
directory
 ]

                  [ -metadir 
directory
 ]

                  [ -ldconf 
path
 ]

                  [ -dont-add-directory-directive ]
                  [ -patch-version 
string
 ]

                  [ -patch-rmpkg 
name
 ]

                  [ -patch-archives ]
                  [ -dll ] [ -nodll ] [ -optional ] [ -add ]
                  
package_name
 
file
 ...

این زیردستور یک بسته جدید را یا در مکان پیش‌فرض (متغیر destdir از findlib.conf را ببینید)، یا در دایرکتوری مشخص‌شده با گزینه -destdir نصب می‌کند. این بدان معناست که یک دایرکتوری بسته جدید ایجاد می‌شود و فایل‌های مشخص‌شده در خط فرمان به این دایرکتوری کپی می‌شوند. الزامی است که فایل META یکی از فایل‌های کپی‌شده به دایرکتوری مقصد باشد.

توجه داشته باشید که دایرکتوری‌های بسته باید هم‌سطح (بدون زیردایرکتوری) باشند. بسته‌های موجود هرگز بازنویسی نمی‌شوند.

امکان داشتن یک دایرکتوری مجزا برای تمام فایل‌های META وجود دارد. اگر چنین چیزی می‌خواهید، باید یا متغیر metadir از findlib.conf را تنظیم کنید، یا گزینه -metadir را مشخص نمایید. در این حالت، فایلی به نام META به دایرکتوری مشخص‌شده کپی شده و نام آن به META.p تغییر می‌یابد (که در آن p نام بسته است)، در حالی که تمام فایل‌های دیگر طبق معمول به دایرکتوری بسته کپی می‌شوند. علاوه بر این، فایل META به گونه‌ای تغییر می‌یابد که متغیر directory حاوی مسیر دایرکتوری بسته باشد.

گزینه -dont-add-directory-directive مانع از افزودن متغیر directory توسط نصب‌کننده می‌شود.

اگر فایل‌هایی با پسوندهای .so یا .dll وجود داشته باشند، دایرکتوری بسته به فایل پیکربندی DLL یعنی ld.conf اضافه می‌شود، به‌گونه‌ای که بارگذار پویا بتواند DLL را پیدا کند. مکان این فایل می‌تواند توسط گزینه -ldconf لغو و جایگزین شود. برای خاموش کردن این قابلیت، از “-ldconf ignore” استفاده کنید؛ این کار باعث می‌شود فایل ld.conf دست‌نخورده باقی بماند.

با این حال، اگر دایرکتوری stublibs در site-lib وجود داشته باشد، DLLها در دایرکتوری بسته نصب نمی‌شوند، بلکه در این دایرکتوری که بین تمام بسته‌های نصب‌شده در همان مکان مشترک است نصب می‌گردند. در این حالت، فایل پیکربندی ld.conf تغییر داده نمی‌شود، بنابراین اگر این شیوه نصب را ترجیح می‌دهید، نیازی نیست که از عبارت “-ldconf ignore” استفاده کنید.

از گزینه‌های -dll و -nodll می‌توان برای کنترل دقیق اینکه کدام فایل‌ها به‌عنوان DLL در نظر گرفته شوند و کدام‌یک نشوند، استفاده کرد. به‌طور پیش‌فرض، قاعده پسوند ذکرشده برقرار است: فایل‌های با پسوند “.so” (یونیکس) یا “.dll” (ویندوز) DLL هستند. سوییچ -dll این موضوع را تغییر می‌دهد، و تمام فایل‌های بعدی صرف‌نظر از پسوندشان، DLL محسوب می‌شوند. سوییچ -nodll مشخص می‌کند که فایل‌های بعدی DLL نیستند، حتی اگر پسوندی مشابه DLL داشته باشند. برای نمونه، در فراخوانی زیر فایل‌های f1 و f2 با قاعده پسوند مدیریت می‌شوند؛ f3 و f4 در هر صورت DLL هستند؛ و f5 و f6 نیز DLL محسوب نمی‌شوند:

ocamlfind install p f1 f2 -dll f3 f4 -nodll f5 f6
سوییچ -optional مشخص می‌کند که تمامی فایل‌های بعدی اختیاری هستند،

بدین معنی که در صورت عدم وجود فایل‌ها، دستور با خطا مواجه نخواهد شد.
گزینه‌های -patch می‌توانند برای تغییر محتوای فایل‌های META در زمان

نصب استفاده شوند. گزینهٔ -patch-version محتوای متغیر سطح بالای

"version" را تغییر می‌دهد. گزینهٔ -patch-rmpkg زیربستهٔ داده‌شده

را حذف می‌کند. گزینهٔ -patch-archives آزمایشی است،

به‌ویژه تمام فایل‌های ناموجود را از متغیرهای "archive" حذف می‌کند،

و حتی اگر بایگانی‌ها یافت نشوند، کل زیربسته‌ها را حذف خواهد کرد.
اثر -add افزودن فایل‌های بیشتر به بسته‌های از پیش نصب‌شده

است.

ocamlfind remove [ -destdir 
directory
 ]

                 [ -metadir 
directory
 ]

                 [ -ldconf 
path
 ]

                 
package_name

بسته در صورتی که در مکان پیش‌فرض نصب شده باشد حذف خواهد شد (متغیر destdir از findlib.conf را ببینید). اگر بسته در مکان متفاوتی قرار داشته باشد، به‌طور پیش‌فرض حذف نخواهد شد؛ با این حال، می‌توانید یک دایرکتوری جایگزین را برای بسته‌ها با استفاده از گزینهٔ -destdir تعیین کنید. (این باید همان دایرکتوری مشخص‌شده هنگام نصب باشد.)

توجه داشته باشید که دایرکتوری‌های بسته باید مسطح باشند (فاقد زیردایرکتوری)؛ این زیرفرمان نمی‌تواند دایرکتوری‌های تو‌در‌تو (عمیق) بسته را حذف کند.

اگر دایرکتوری جداگانه‌ای برای فایل‌های META دارید، باید این دایرکتوری را یا از طریق متغیر metadir در findlib.conf پیکربندی کنید، یا با تعیین گزینهٔ -metadir.

اگر بسته و/یا فایل META یافت نشود، این دستور با خطا خاتمه نمی‌یابد. در این حالت فقط یک هشدار دریافت خواهید کرد.

اگر نام دایرکتوری بسته در فایل پیکربندی ld.conf مربوط به DLLها آمده باشد، تلاش می‌شود که این مدخل از فایل حذف شود. مکان این فایل را می‌توان با گزینهٔ -ldconf جایگزین کرد. برای غیرفعال کردن این ویژگی، از "-ldconf ignore"; استفاده کنید؛ این کار مانع از اصلاح فایل ld.conf می‌شود.

اگر دایرکتوری stublibs وجود داشته باشد، بررسی می‌شود که آیا بسته مالک هر یک از فایل‌های موجود در این دایرکتوری هست یا خیر، و فایل‌های متعلق به آن حذف خواهند شد..SH "زیردستور 'list' (THE 'list' SUBCOMMAND)"

ocamlfind list [-describe]

این دستور همهٔ بسته‌ها را در مسیر جستجو فهرست می‌کند. گزینهٔ -describe توضیحات بسته‌ها را نیز در خروجی نمایش می‌دهد.

ocamlfind printppx
          [ -predicates 
pred-name-list
 ]

          [ -ppxopt 
package
,
arg
 ]

          
package
 ...

این دستور گزینه‌های پیش‌پردازندهٔ ppx را همان‌گونه که در یک فراخوانی کامپایلر OCaml برای بسته‌های فهرست‌شده در دستور ظاهر می‌شوند، چاپ می‌کند. خروجی شامل یک گزینهٔ "-ppx" برای هر پیش‌پردازنده است. گزینه‌های ممکن معنای یکسانی با گزینه‌های "ocamlfind ocamlc" دارند. گزینهٔ "-predicates" گزاره‌های مفروض را اضافه می‌کند و "-ppxopt package,arg" مقدار "arg" را به فراخوانی ppx برای بستهٔ package می‌افزاید.

خروجی "ocamlfind printppx" برای دستورهای ppx که شامل آرگومان‌های جداشده با فاصله هستند، حاوی علامت نقل‌قول """ خواهد بود. در این حالت $(ocamlfind printppx ...) آن‌طور که ساده‌انگارانه انتظار می‌رود کار نخواهد کرد، زیرا بسیاری از پوسته‌ها (از جمله bash و dash) تفکیک فیلد را روی نتیجهٔ جایگزینی‌های دستور، بدون رعایت علامت‌های نقل‌قول انجام می‌دهند..SH "زیردستور 'lint' (THE 'lint' SUBCOMMAND)"

ocamlfind lint 
file

فایل META را بررسی کرده و مشکلات احتمالی را گزارش می‌دهد.

ocamlfind printconf [ conf | path | destdir | metadir | metapath | stdlib | ldconf ]

این دستور پیکربندی مؤثر را پس از خواندن فایل پیکربندی و پس از اعمال متغیرهای محیطی گوناگونی که تنظیمات را بازنویسی می‌کنند، چاپ می‌کند. هنگامی که بدون آرگومان فراخوانی شود، دستور تمام گزینه‌های پیکربندی را به شکلی انسان‌خوان چاپ می‌کند. هنگامی که با یک آرگومان فراخوانی شود، تنها مقدار گزینه درخواستی بدون متن‌های توضیحی چاپ می‌شود:

conf
مکان فایل پیکربندی findlib.conf را چاپ می‌کند
path
مسیر جستجو برای بسته‌ها را چاپ می‌کند. اعضای این مسیر با خط جدید (linefeed) از یکدیگر جدا می‌شوند.
destdir
مکانی را که بسته‌ها به‌طور پیش‌فرض در آن نصب و حذف می‌شوند چاپ می‌کند.
metadir
مکانی را که فایل‌های META در آن نصب و حذف می‌شوند (در صورت استفاده از چینش جایگزین) چاپ می‌کند.
metapath
مسیری را که فایل META برای یک بسته فرضی در آن نصب می‌شود چاپ می‌کند. نام بسته در مسیر با '%s' مشخص شده است. برای نمونه، این دستور بسته به نحوه چینش می‌تواند "/some/path/%s/META" یا "/some/path/META.%s" را خروجی دهد.
stdlib
مکان کتابخانه استاندارد را چاپ می‌کند.
ldconf
مکان فایل ld.conf را چاپ می‌کند

ocamlfind 
pkg
/
cmd
 
argument
 ...

این زیرفرمان برای فراخوانی برنامه‌هایی که در دایرکتوری‌های بسته نصب شده‌اند مفید است. دایرکتوری مربوط به pkg را جستجو کرده و دستور با نام cmd در این دایرکتوری را فراخوانی می‌کند. آرگومان‌های باقی‌مانده به این دستور ارسال می‌شوند.

مقدار argv(0) حاوی مسیر مطلق به دستور است، و argv(1) و مدخل‌های بعدی argv شامل آرگومان‌ها هستند. دایرکتوری کاری تغییر نمی‌کند.

مثال: برای فراخوانی برنامه "x" که در بسته "p" نصب شده است، با آرگومان‌های "y" و "z"، اجرا کنید:

ocamlfind p/x y z

فایل پیکربندی و متغیرهای محیطی در صفحهٔ راهنمای findlib.conf مستند شده‌اند.

ocamlfind -toolchain 
name
 ...
گزینهٔ -toolchain می‌تواند پیش از هر دستور دیگری مشخص شود،

برای نمونه:
ocamlfind -toolchain foo ocamlc -c file.ml

فایل file.ml را با زنجیره‌ابزار "foo" کامپایل می‌کند. با گزینش زنجیره‌ابزارها می‌توان به مجموعه‌دستورهای متفاوتی جابه‌جا شد. برای نمونه، زنجیره‌ابزار "foo" ممکن است شامل یک کامپایلر وصله‌شدهٔ ocamlc باشد. برای نحوهٔ پیکربندی زنجیره‌ابزارها، findlib.conf را ببینید.

مدیر بسته findlib برای OCaml راهنمای کاربر