У меня есть CMakeLists.txt
для моего проекта C++
, который отлично работает в Windows, используя MSVC
, а также в Linux с gcc
. Я также пытаюсь использовать тот же файл для кросс-компиляции в Windows для Linux.Ошибка CMake при связывании
Я использую Eclipse CDT4 - Unix Makefiles
в качестве генератора для создания проекта make-файла в Eclipse. Для того, чтобы использовать кросс-компилятор, я создал следующий файл ToolChain
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 может видеть файл объекта, который он жалуется, которого он не может найти. Это прямо сейчас.
Я использую этот кросс-компилятор некоторое время, и я уверен, что он работает правильно. Я на самом деле строю тот же проект, используя тот же кросс-компилятор с внутренним застройщиком Eclipse без CMake. Поэтому проблема не должна заключаться в самом кросс-компиляторе.
Это нормально, что используется x86_64-amd-linux-gnu-g++.exe
для ссылки вместо x86_64-amd-linux-gnu-ld.exe
?