問題タブ [header-only]

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.

0 投票する
0 に答える
54 参照

c++ - サードパーティのヘッダー ファイルで定義を非表示にすることはできますか?

.hpp ファイルと .ipp ファイルのみを使用して、ヘッダーのみのライブラリを作成しています。また、標準ライブラリを #include する必要がある場合もあります。

しかし、IDE がすべてを解析してユーザーに提案を表示するにはコストがかかります。ヘッダーのみのライブラリを作成しようとしているため、定義と実装を分割したくありません。

この問題を克服するための賢明な解決策にたどり着くことができませんでした。そのような状況で従うべき実用的な方法はありますか?

前もって感謝します。

0 投票する
1 に答える
2812 参照

c++ - cmake を使用して C++ プロジェクトに Eigen ライブラリを追加する

残念ながら、Ubuntu 18.04.4 LTS システムで Cmake を使用してヘッダーのみの Eigen 3.3.7 ライブラリを Makefile に追加する際に問題が発生しました。ライブラリ フォルダーをインクルード ディレクトリにコピーし include_directories(./include/eigen3)、CMakeLists.txt ファイルで使用するだけで、ライブラリを使用してコードをコンパイルできます。ただし、ライブラリ パスをハードコードするのではなく、CMakeLists.txt ファイルで動的に設定して、プロジェクトを他の人と簡単に共有できるようにしたいと考えています。残念ながら、私が見つけた指示はどれもうまくいきませんでした。

次の最小限のコード例を用意しました。

main.cpp:

CMakeLists.txt:

ヘッダーのみの Eigen 3.3.7 ライブラリをダウンロードし、フォルダーの名前を eigen3 に変更しました。その後、フォルダーは次の場所に移動されました。 /usr/local/share/eigen3

実行するcmake CMakeLists.txtと、次のエラーが表示されます。

Eigenライブラリ フォルダを確認したところ、/usr/local/share/eigen3/cmake必要な Eigen3Config.cmake ではなく、Eigen3Config.cmake.in という名前のファイルのみが含まれていることがわかりました。これはなぜですか?

ファイルの名前を Eigen3Config.cmake に変更してみました。ここで、エラーは次のとおりでした。

さらに、スタックオーバーフローで説明されているソリューションも試しました: CMake find_package not working for Eigen? 成功せずに。

どうすればこれを適切に機能させることができますか? また、基礎となるシステムをまだよく理解していないと思います。説明をいただければ幸いです。

0 投票する
0 に答える
73 参照

c++ - ライブラリをヘッダーのみのライブラリにリンクする

私は2つのライブラリを持っています:

  • a;
  • b: に依存するヘッダーのみのライブラリa

bにリンクできるかどうかはわかりませんa。もしそうなら、どうすればいいですか?

c実際、両方に依存する 3 つ目のライブラリがあります。この CMake スクリプトは機能しません。

のソース ファイルをaの定義に追加することで回避策を使用しましたc