問題タブ [conan]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - リンク フラグを自分の conan パッケージのユーザーから隠すことはできますか?
OpenGL を使用するconanにパッケージとしてアップロードされたライブラリがありGL、CMakeLists.txt. ライブラリのユーザーは、再度 GL に対して明示的にリンクする必要がありますか? コナンはそれを追跡して に含める方法を提供してい${CONAN_LIBS}ますか?
私がドキュメントで見つけた最も近いものは methodpackage_infoです。リンカーの追加オプションを指定できるようですが、私のライブラリの で適切に使用していないようですconanfile.py。私はすべてを試しました:
しかし、ユーザー コードでリンク フラグを設定しないと、GL のメソッドへの「未定義の参照」が発生します。
編集: Linux mint 17 で作業しています。
c++ - Windows でコナンの SDL2 を使用する方法
Windows で conan を使用してコンパイルするのは初めてで、SDL2 の使用に苦労しています。
ここに、conan を使用する hello world があります。これは、Linux で正常にコンパイルおよび実行されます。
しかし、Windows (Windows bash に git を使用、それが重要かどうかはわかりません) では、SDL2 に対するリンクが次のようなエラーで失敗します。
問題は、リンクを成功させるにはどうすればよいかということです。できれば共有 (SDL2.dll) を使用してください。事前に皆さんに感謝します。以下にいくつかの詳細があります。詳細が必要な場合は、お問い合わせください(たとえば、コンパイル全体をペーストビンに入れます)。
エラーの再現
これは私の CMakeLists.txt です
そして私のconanfile.txt:
これらは私の設定.conan/conan.confです(conan installが使用しているもの):
クローン作成後にこれらの行を使用しています:
その最後のコマンドはこれを行うのに失敗します (それが を使用していることはわかりますがSDL2.lib):
いくつかの警告、おそらく無関係
x86用に構築されたsdl2?
C関数を使用した次のような〜200の警告のように:
c++ - 外部ライブラリを conan パッケージにラップし、共有ライブラリとしてビルドするためのサポートを追加する方法
Google の Gumbo パーサーを Conan パッケージとしてラップしようとしています。Linux Mac と Windows のサポートにはほとんど成功していますが、Windows で共有ライブラリ (.dll + .lib) として作成 (および使用) する際に問題が発生しています。
私の現在の進行状況はこちらです。ソースを取得するときにコピーする CMakeLists.txt を提供するために、Gumbo の autoconf ビルド システムをバイパスすることにしました。このようにして、Windows も完全にサポートできるようにしたいと考えていました。
私は Visual C++ にはあまり詳しくありませんが、Gcc と Clang がすべてをエクスポートするのに対し、Visual C++ はデフォルトでシンボルをエクスポートしないという点で他のコンパイラとは異なることを理解しています。
これにより、一部のシナリオで Conan パッケージのビルドが失敗します。これは、共有モードでは .dll を生成するだけである (対応する .lib がない) ためです。
CMake の GENERATE_EXPORT_HEADER モジュールを使用してみましたが、エクスポートする必要があるメソッドで生成されたマクロを実際に使用する必要があるため、ほとんど役に立ちませんでした。しかし、フォークして適応させることなく、ライブラリをラップしようとしているだけです。
もう 1 つのオプションは、.def ファイルを使用することです。これはこの場合うまくいくかもしれませんが (エクスポートするシンボルはそれほど多くありません)、あまり役に立ちません (必要なすべてを実際にエクスポートしたかどうかをテストするのが難しく、維持するのが難しく、同じ問題を解決するのにあまり役に立ちません)。エクスポートするシンボルがはるかに多い他の状況)。
これを行うための推奨される方法はありますか?
c++ - conan 依存関係マネージャーとの Poco C++ Linking の問題、どうすれば修正できますか?
プログラミング プロジェクトで Poco ライブラリを使用しようとしていますが、リンク エラーが発生します。私の C++ ファイルには、メイン関数に 1 行のコードがあり、正常にコンパイルされるはずです。
私のC++ファイル:
私のCMakeLists:
そして私のconanfile.txt:
私の生成されたconaninfo.txt:
今、私はそれを構築しrm -Rfv build conan{b,i}* && conan install . && mkdir build && cd build && cmake .. && cmake --build . -- VERBOSE=1; cd ..ます:
私はそれを間違ってコンパイルしていますか、どうすればこれを機能させることができますか?
conan - Conan と相互に依存するライブラリを 1 つのパッケージにするにはどうすればよいですか?
パッケージ マネージャーとして conan を使用しようとしているプロジェクトがあります。このプロジェクトでは多数のライブラリを使用していますが、そのほとんどは自給自足です。ただし、それらの一部は別のライブラリに依存しています。具体的な例を挙げると、ライブラリ A と B を必要とするプロジェクト P があるとします。A は自己完結型ですが、B はそのコンパイルとリンクを A に依存しています。
ライブラリ A の conanfile.py を簡単に作成できます。プロジェクト P の conanfile.txt を作成できます。A と B がまだビルドされていないと仮定して、P のビルド ディレクトリに次のように入力できるようにしたいと考えています。
そして conan にライブラリ A をダウンロード、コンパイル、インストールさせ、次にライブラリ B をダウンロード、コンパイル、インストールさせます。B は A への正しい参照を持ちます。
Bのconanfile.pyの書き方はどうするのが正解?
gradle - 言語/プラットフォーム/ビルドに依存しない依存関係マネージャー
特定の言語やビルド システムに縛られていない依存関係マネージャーが必要です。いくつかの優れたツール (Gradle、Bazel、Hunter、Biicode、Conan など) を調べましたが、私の要件を満たすものはありませんでした (以下を参照)。Git Submodules と Mercurial Subrepos も使用しました。
私のニーズは、Meeting C++ 2014 での Daniel Pfeifer によるプレゼンテーションで詳しく説明されています。
- パッケージマネージャーだけじゃない
- ビルド済みまたはソースの依存関係をサポート
- ローカルでダウンロードまたは検索できます - 不要なダウンロードはありません
- さまざまな方法を使用して取得します (つまり、ダウンロード、または VCS クローンなど)。
- システム インストーラーと統合 - lib がインストールされているかどうかを確認できます
- ソースコードを変更する必要はありません
- ビルドシステムを調整する必要はありません
- クロスプラットフォーム
私が追加するさらなる要件または説明:
- サードパーティおよび/またはバージョン管理された依存関係に適していますが、バージョン管理されていない依存関係および/または共同開発された依存関係を指定することもできます (おそらく git/mercurial ハッシュまたはタグによって指定されます)。
- 指定されたフェッチ動作をオーバーライドして、選択した別の依存関係バージョンを使用するメカニズムを提供します。
- 依存関係ストアを手動で設定する必要はありません。冗長または循環的な依存関係を回避する方法として、中央の依存関係の場所に反対しているわけではありません。ただし、リポジトリのクローンを作成し、依存関係マネージャーを呼び出してすべてをビルドするトップレベルのビルド スクリプトを実行するという単純さが必要です。
- ビルド システムを変更する必要はないという要件にもかかわらず、明らかに、一部のトップレベル ビルドは依存関係マネージャーを使用し、それらの依存関係を個々のビルドにフィードする必要があります。この要件は、個々のビルドが依存関係マネージャーを認識してはならないことを意味します。たとえば、C++ パッケージに CMake を使用する場合、その CMakeLists.txt を変更して特別なものにする必要はありません。依存関係を見つけるための関数呼び出し。むしろ、最上位のビルド マネージャーは依存関係マネージャーを呼び出して依存関係を取得し、CMake が従来の方法 (つまり、find_package または add_subdirectory) で使用できる引数を提供する必要があります。言い換えれば、最上位のビルドと依存関係マネージャーの作業を手動で行うオプションが常にあるべきであり、個々のビルドは違いを認識すべきではありません。
あった方がよい:
- 依存関係が配置された場所を見つけるために、事後的に依存関係マネージャーに問い合わせる方法。これにより、VCS フックを作成して、共同開発されたソース リポジトリの依存関係の依存関係メタデータのハッシュを自動的に更新できます。(サブモジュールやサブレポのように)。
c++ - ローカル ストアにパッケージをインストールする方法は?
conan 0.16.0 を使用していますが、ローカル ストアにパッケージをインストールする方法がわかりません。私の考えは、レシピを作成し、レシピから必要なすべてのパッケージを作成し、それらをローカルストアにインストールしてから、コナンサーバーにアップロードして、他の開発者がパッケージを再コンパイルすることなく利用できるようにすることです。 .
私が実際にやっていること:
- レシピを作成します (conanfile.py と私のビルドおよびエクスポート メソッド)
- を使用してローカルストアにインストールします
conan export user/channel - 実行してビルドできることを確認します
conan build - でパッケージを作成し
mkdir mypackage、cd mypackageconan package .. - そして、このパッケージをローカルストアにインストールする方法がわかりません(その後、レシピとパッケージをローカルストアからサーバーにアップロードしたいと思います)
パッケージを地元の店に置く唯一の方法は、前のレシピを必要とする別のレシピを用意してからconan install --build. 最初のレシピのパッケージがビルドされ、ローカル ストアに表示されますが、この方法では、目標を達成するために「偽の」要件を作成する必要があります。
必要な設定のパッケージをビルドして、ローカル ストアに直接インストールする方法はありますか?