2

Qt に Intel コンパイラを使用したいのですが、Intel コンパイラを使用するとスクリプトが実行されます。

$ source /opt/intel/bin/compilervars.sh intel64

もちろん、これを に追加することもできますが~/.bashrc、これは QtCreator では実行されず、icpc が見つからないというエラーが表示されます。だから私はそれをメインのmkspec qmakeファイルの一部にしたい.

qmakeでその完全なbashコマンドを実行するにはどうすればよいですか?

4

2 に答える 2

2

簡単な回答: QMAKE_EXTRA_TARGETS と PRE_TARGET_DEPS を使用すると、実行できますがsource /opt/intel/bin/compilersvars.sh intel64、単にそれらを調達するだけでは問題は解決しません。

長い答え: QMake ファイルは Makefile に変換されます。次に Make は Makefile を実行します。ここで直面する問題は、Make が各コマンドを独自のシェルで実行することです。したがって、単にスクリプトをソースするだけでは、スクリプトを実行するコマンドのみが影響を受けます。

物事を機能させるには、いくつかの方法があります。

  • Qt-Creator を起動する前にスクリプトを実行します。 私は実際に、特別な環境変数を設定する必要があるいくつかのプロジェクトでこれを行いました。作業を楽にするために、シェル コマンドを作成して環境をセットアップし、Qt-Creator を起動しました。
  • Qt-Creator 内で、 このトリックも使用したプロジェクトのビルド環境を変更します。あなたの場合、スクリプトによる環境設定を見て、プロジェクトのプロジェクトタブの下にある「ビルド環境」設定を変更して、スクリプトによる設定と一致させます。

QMake のコンパイラ コマンドを変更することも可能かもしれませんが、1 つではなく 2 つのコマンドを実行できるかどうかはわかりません (スクリプトをソースしてからコンパイラを実行します)。さらに、これにより、プロジェクトは他のシステムに移植できなくなります。

于 2013-08-14T12:59:46.147 に答える
0

多かれ少なかれ次のことを行うシェル スクリプトを作成できます。

#! /usr/bin/env sh

# Remove the script's path from the PATH variable to avoid recursive calls
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
export PATH=${PATH/$SCRIPT_DIR:/}

# Set the environment up
source /opt/intel/bin/compilervars.sh intel64

# Call make with the given arguments
make "$@"

どこかの空のディレクトリにある「make」という名前のファイルに保存し、実行可能にしてから、QT Creator のビルド環境を変更して、PATH の前にスクリプトのディレクトリを追加します。

PATH=[dir-of-make-script]:${Env:PATH}

これは、プロジェクト設定で行うことも、キット設定で一度だけ行うこともできます。

このように、QT Creator はだまされて、実際の make バイナリを呼び出す前に環境をセットアップする make スクリプトを呼び出します。私は Windows で Linux クロスツールチェーンを使用して同様の手法を使用しており、これまでのところうまく機能しています。

于 2018-07-04T11:36:30.167 に答える