Фон
Я пытаюсь создать собственное программное обеспечение внутри сборки Yocto. Программное обеспечение построено CMake.
Мой рецепт следующий - customsoftware.bb
:
SRCBRANCH = "master"
SRCREV = "master"
MY_SRC = "OMITTED"
SRC_URI = "${MY_SRC};branch=${SRCBRANCH}"
# libraries dependencies
DEPENDS += "boost"
S = "${WORKDIR}/git"
B = "${WORKDIR}/build"
PARALLEL_MAKE ?= "-j 1"
inherit cmake
# My CMake Options
EXTRA_OECMAKE+=" -DSOME_OPTION=ON"
# I want unix makefiles instead on ninja build
OECMAKE_GENERATOR="Unix Makefiles"
Ниже приведена разбавленная версия моего проекта cmake - CMakeLists.txt
Обратите внимание: для краткости я опустил нерелевантные детали
cmake_minimum_required(VERSION 3.0.0)
#---------------------------------------------------------------------------------------
# set default build to release
#---------------------------------------------------------------------------------------
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose Release or Debug" FORCE)
endif()
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/dist/)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/dist/bin)
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
message(FATAL_ERROR "
${BoldRed}Error:${ColourReset} In-source builds are not allowed. You should create separate directory for build files.
${Magenta}CMAKE_BINARY_DIR${ColourReset}(${CMAKE_SOURCE_DIR}) must be different from ${Magenta}CMAKE_SOURCE_DIR${ColourReset}(${CMAKE_BINARY_DIR})
")
endif ()
project(myapp)
find_package(Boost REQUIRED COMPONENTS thread)
add_executable(${PROJECT_NAME}
${HEADERS}
${SOURCES}
)
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
#Copy entire contents of dist/ to /opt/myapp
install(DIRECTORY ${CMAKE_BINARY_DIR}/dist/
DESTINATION /opt/myapp
)
Я добавил свой рецепт к изображению.
Выпуск
Когда я запускаю du -h tmp/work/.../<customsoftware>/build/dist/bin
, двоичный размер составляет 80 МБ. Кроме того, после развертывания в целевой системе размер двоичного файла составляет 80 МБ.
ОБНОВЛЕНИЕ
Как указано в комментариях, двоичные файлы в tmp/work/.../<customsoftware>/image
не удаляются. Однако двоичные файлы в tmp/work/.../<customsoftware>/packages-split
удаляются.
Если я запускаю make
в источнике приложения - не через рецепт и вне yocto - размер двоичного файла составляет 1,7 МБ
Вопрос
Если я правильно помню, сборка OE удалит символы отладки из получаемых двоичных файлов.
Почему мой двоичный файл все еще разворачивается с символами отладки? Что я пропустил?
Как я могу убедиться, что только раздетый - Тип выпуска - двоичный файл развернут?