我有一個CMakeLists.txt
爲我的C++
項目,在Windows上完美工作,使用MSVC
,並在Linux上與gcc
。我正在嘗試在Windows for Linux上使用相同的文件進行交叉編譯。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
我可以看到它抱怨找不到的對象文件。它就在那裏。
我一直在使用這個交叉編譯器一段時間,我相信它工作正常。我實際上使用與不帶CMake的Eclipse內部構建器相同的交叉編譯器構建相同的項目。所以這個問題不應該與交叉編譯器本身有關。
這是正常的,它使用x86_64-amd-linux-gnu-g++.exe
鏈接而不是x86_64-amd-linux-gnu-ld.exe
?