我有一个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
?