問題タブ [qbs]
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++ - QBS 経由で PostgreSQL C ライブラリをアタッチするにはどうすればよいですか?
postgresql c-library (libpq) を使用する必要があるプロジェクトがあり、プロジェクトが構成されています。必要なすべてのヘッダーとライブラリをプロジェクトにインポートするように QBS モジュールを構成するにはどうすればよいですか?
c++ - 製品のコレクションの一部としてアプリケーションをビルドすると、「/usr/bin/ld: ライブラリが見つかりません: ファイル形式が認識されません」というエラーが表示される
静的ライブラリ、共有ライブラリ、Qt GUI アプリケーションを含むサブプロジェクトのコレクションである QBS プロジェクトがあります。Qt GUI アプリケーションは、リンク段階が失敗し、プロジェクト チェーンの初期にビルドされたライブラリに対していくつかの「/usr/bin/ld: {library} が見つかりません: ファイル形式が認識されません」というエラーをスローするという問題を引き起こしています。ただし、このエラーをスローするものとほぼ同じ .qbs ファイルを持つライブラリを含め、すべてのライブラリに対してこれを行うわけではありません。
奇妙なことに、アプリケーションを独自にビルドすると、つまり、トップレベルではなくアプリケーションのプロジェクト ディレクトリ内から qbs を実行すると、正常にビルドされます (依存ライブラリがすべてインストール ディレクトリ内に存在すると仮定します)。私が見た主な違いは、完全なプロジェクトをビルドするとき、アプリケーションの cpp.libraryPaths がプロジェクト内のすべての製品で無視され、アプリケーションがビルド ディレクトリで生成された lib ファイルに対してリンクしようとすることです。 cpp.libraryPaths は意図したとおりに使用され、インストール ディレクトリ内のファイルは正常にリンクされています。
ビルド ディレクトリ内のファイルがエラーをスローしているときに、インストール ディレクトリ内の lib ファイルがリンクされる理由がわかりません。そもそもリンクが失敗する原因は何ですか? さらに、最上位で qbs を呼び出してすべてをビルドできるように、プロジェクト構成を修正するにはどうすればよいですか。私はおそらくこれを間違った方法で行っていますか?
ビルドを開始するために使用するコマンドは次のとおりです。
そして、問題の視覚的表現:
そして、これは関連するqbsファイルの非常に単純化された複製です