Как правильно использовать доккросс для кросс-компиляции? - PullRequest
0 голосов
/ 14 сентября 2018

Некоторая справка

Я пытаюсь кросс-компилировать приложение, которое у меня есть для 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

Вопросы

  1. Почему CMake не поднял другие каталоги?Они присутствуют в контейнере Linux.

  2. Мой проект имеет много зависимостей, например, boost.Как мне изменить мой CMakeLists.txt, чтобы правильно скомпилировать мои проекты с помощью Dockcross?

...