私はCMakeでインストールルールを設定する多くのコンポーネントまたは「サブモジュール」(ブーストに多くのコンポーネントがあるものと同様)を含む大規模ライブラリを持っています。
私のライブラリがmyLibバージョン1.2.3であるとしましょう。私の質問は、私のライブラリがいくつかのコンポーネントのために多くのファイルまたは出力ファイルを生成するので、これらのファイルをたとえば.a
またはサブフォルダにインストールできますか?.so
/usr/local/lib/
/usr/local/lib/myLib/
/usr/local/lib/myLib-1.2.3/
私は通常Windows開発者ですが、Ubuntuをダブルブートしており、Unixの他の開発者が私のライブラリをできるだけ簡単にインストールできることを願っています。
libboost-all-dev
すべてのファイルを直接インストールするのを見ましたが、/usr/local/lib/
これはlibフォルダが非常に複雑になりました。多くのライブラリファイルを含むこのフォルダに「混雑を追加」しても問題はありますか?
また、私のライブラリファイルのタイトルにバージョンを含める必要があるかどうか悩んでいます。これを行う基準は何ですか?たとえばmyLib-1.2.3.a
、myLib.a
これが主な質問から少し離れたトピックであることを知っていますが、libフォルダに直接インストールする場合は、ファイルなどにバージョン番号を含めることがより有利である可能性があるため、少し関連していると思います。
また - ソフトウェアエンジニアリングと密接に関連していることを知っているので、これが間違ったスレッドであればお詫び申し上げます。しかし、他の何よりも、Linuxフォルダ構造とより関連性があると思います!
答え1
システムのlibディレクトリの外部にライブラリをインストールして他のユーザーにアクセスできるようにするには、ライブラリを配置したディレクトリを含む/etc/ld.so.conf.d/
テキストファイルを作成してlibを実行しますldconfig
。競合がなければ、システムはライブラリを正しく選択します。コンパイラ/リンカに提供/設定する-l
以外に、コンパイラとリンカの設定を台無しにする必要はありません-L
。