Некоторая справка
Я пытаюсь кросс-компилировать приложение, которое у меня есть для RaspberryPi 3B.Я установил dockcross , как показано ниже:
docker run --rm dockcross/linux-armv6 > ./dockcross
chmod +x ./dockcross
mv ./dockcross ~/bin/
На моем хосте MacOS High Sierra я могу без проблем компилировать и связывать.
Issue
Первый запуск: dockcross cmake -Bbuild -H.
.После этого при запуске dockcross make
, естественно, компилятор выдает ошибку: <some-lib/some-lib.h> not found
.
После этого я получил доступ к bash контейнера с помощью dockcross bash
и установил все недостающие библиотеки и их заголовки в контейнер.К сожалению, ошибка та же, и компилятор не может найти заголовки.Содержимое моего CMakeLists.txt
:
cmake_minimum_required (VERSION 3.0)
project (myLibProject)
include_directories(
.
/usr/include
)
link_directories(
/usr/lib
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
file(GLOB SOURCES
"include/*.h"
"src/*.cpp"
)
add_library(myLibProject ${SOURCES})
target_link_libraries(myLibProject some-lib)
При пробном запуске make - make -n
- я не вижу директивы include для папок, отличных от текущей - .
- folder:
/usr/bin/arm-linux-gnueabihf-g++ -I/work/. -std=c++11 -o CMakeFiles/myLibProject.dir/src/src1.cpp.o -c /work/src/src1.cpp
Если я вручную запустил указанную выше команду, добавив -I/usr/include
, компилятор успешно скомпилирует src1.cpp.o
Вопросы
Почему CMake не поднял другие каталоги?Они присутствуют в контейнере Linux.
Мой проект имеет много зависимостей, например, boost.Как мне изменить мой CMakeLists.txt
, чтобы правильно скомпилировать мои проекты с помощью Dockcross?