web-dev-qa-db-ja.com

CMake:カスタムリンカーを使用する

Qmakeでカスタムツールチェーンをセットアップしたい。コンパイラを設定しましたが、リンカーの設定方法がわかりません。 cmakeがコンパイラーを使用してリンクしようとするため、このエラーが報告されます。

The C compiler "xgcc.exe" is not able to compile a simple test program.

ここに私のツールチェーンファイルのスニペットがあります

# specify the cross compiler
INCLUDE(CMakeForceCompiler)
SET(CMAKE_C_COMPILER   xgcc.exe)
SET(CMAKE_CXX_COMPILER xgcc.exe)
#CMAKE_FORCE_C_COMPILER(xgcc.exe GNU)
#CMAKE_FORCE_CXX_COMPILER(xgcc.exe GNU)

コンパイラを強制しようとしましたが、リンカの問題は解決されません。

27
Breezeight

CMAKE_CXX_LINK_EXECUTABLE、CMAKE_C_LINK_EXECUTABLE変数を使用する必要があります。

SET(CMAKE_C_LINK_EXECUTABLE "c:\\MoSync\\bin\\pipe-tool.exe")
11
Breezeight

リンクコマンドラインはModules/CMake {C、CXX、Fortran} Information.cmakeで設定されており、デフォルトではCMAKE_LINKERではなくcompilerを使用します(- ソースコード )。これは、変数CMAKE_CXX_LINK_EXECUTABLE(およびフレンド)に存在するリンクコマンドラインを構築するルールを置き換えることで変更できます。 NBこの変数は、リンカー実行可能ファイルへのパスを示していません。実行可能ファイルをリンクする方法を示しています!

1つのアプローチは、リンカーを使用するようにそのルールを設定することです。

cmake -DCMAKE_LINKER=/path/to/linker -DCMAKE_CXX_LINK_EXECUTABLE="<CMAKE_LINKER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>"

参照 このCMakeメーリングリストからの投稿 -これは、リンカー修飾子を別のリンカーの前に付加するのにも自然な場所です。

20
mabraham

変数$ {CMAKE_LINKER}をCMakeCache.txtまたはccmakeの後に設定します。詳細オプションの下。

5
Gunther Piez