私のC++
プロジェクトでは、MSVC
を使用し、Linuxの場合はgcc
を使用して、Windowsで完全に動作するCMakeLists.txt
プロジェクトがあります。私は、Windows用のクロスコンパイルにも同じファイルを使用しようとしています。CMakeがリンクに失敗しました
私は、Eclipse CDT4 - Unix Makefiles
をジェネレータとして使用して、Eclipseでmakeファイルプロジェクトを作成しています。クロスコンパイラを使用するためには、私は、次のツールチェーンファイル
set(CMAKE_SYSTEM_NAME Linux)
set(TOOL_CHAIN_ROOT "C:/mgc/embedded/codebench")
# specify the cross compiler
set(CMAKE_C_COMPILER ${TOOL_CHAIN_ROOT}/bin/x86_64-amd-linux-gnu-gcc.exe)
set(CMAKE_CXX_COMPILER ${TOOL_CHAIN_ROOT}/bin/x86_64-amd-linux-gnu-g++.exe)
set(_ECLIPSE_VERSION "4.5")
を作成していると私は私がここで問題ありません
cmake -G"Eclipse CDT4 - Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../Source/cross-tool.cmake ../Source`
プロジェクトファイルを生成していますどのようにこれはあります。私も
cmake --build .
プロジェクトをコンパイルし始め
でソースファイルをコンパイルすることができますが、リンクしようとしている一番最後に、このエラーで失敗します。
[100%] Linking CXX executable crossProject
x86_64-amd-linux-gnu-g++.exe: error: CMakeFiles/crossProject.dir/Path/To/ObjectFile.cpp.o: No such file or directory
make.exe[2]: *** [crossProject] Error 1
make.exe[1]: *** [CMakeFiles/crossProject.dir/all] Error 2
make.exe: *** [all] Error 2
しかし、私はCMakeFiles/crossProject.dir
Iをチェックするときそれが見つからないと訴えているオブジェクトファイルを見ることができます。それはそこにある。
私はこのクロスコンパイラをしばらく使用しており、正しく動作していると確信しています。私は実際にCMakeを使用しないEclipse内部ビルダーと同じクロスコンパイラを使用して同じプロジェクトを構築しています。だから問題は、クロスコンパイラ自体ではありません。
x86_64-amd-linux-gnu-ld.exe
の代わりにx86_64-amd-linux-gnu-g++.exe
をリンクするのが普通ですか?