I ported my first project to CMake. I build the app successfully on MacOS. Now I’m trying to build it on Raspberry and getting errors at the very end of the build process:
/usr/include/c++/10/bits/stl_uninitialized.h:84:9: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const tracktion_engine::RackNodeBuilder::RackConnection*, std::vector<tracktion_engine::RackNodeBuilder::RackConnection> >’ changed in GCC 7.1
/tmp/ccq8JWtV.s: Assembler messages:
/tmp/ccq8JWtV.s:6586: Error: selected processor does not support `yield' in ARM mode
gmake[2]: *** [CMakeFiles/Bento.dir/build.make:177: CMakeFiles/Bento.dir/home/pi/dev/app/BentoCmake/modules/tracktion_engine/tracktion_engine_playback.cpp.o] Fehler 1
gmake[1]: *** [CMakeFiles/Makefile2:193: CMakeFiles/Bento.dir/all] Fehler 2
gmake: *** [Makefile:149: all] Fehler 2
Here is my CMakeList.txt. This is a version from the tracktion_engine with a few edits.
cmake_minimum_required(VERSION 3.15)
project(Bento VERSION 1.0.0)
# If we are using MSVC we want static runtime linkage
if (MSVC)
set (CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()
# If we are compiling for macOS we want to target OS versions down to 10.11
if (APPLE)
set (CMAKE_OSX_DEPLOYMENT_TARGET "10.11" CACHE INTERNAL "")
endif()
# Compile with werror in release builds
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR
CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Werror")
elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /WX")
endif()
# Adds all the module sources so they appear correctly in the IDE
set_property(GLOBAL PROPERTY USE_FOLDERS YES)
option(JUCE_ENABLE_MODULE_SOURCE_GROUPS "Enable Module Source Groups" ON)
add_subdirectory(../../modules/juce ./cmake_build_juce)
add_subdirectory(../../modules ./cmake_build_tracktion)
if (DEFINED ENV{VST2_SDK_DIR})
MESSAGE(STATUS "Building with VST2 SDK: $ENV{VST2_SDK_DIR}")
juce_set_vst2_sdk_path($ENV{VST2_SDK_DIR})
else()
MESSAGE(STATUS "Not building with VST2")
endif()
set (TargetName ${PROJECT_NAME})
juce_add_gui_app(${TargetName} PRODUCT_NAME "BentoApp")
juce_generate_juce_header(${TargetName})
target_sources(${TargetName} PRIVATE
Source/Main.cpp
Source/BentoPitchShiftPlugin.cpp
Source/BinaryData.cpp
)
# Add all asset files
juce_add_bundle_resources_directory("${PROJECT_NAME}" "Assets")
target_compile_features(${CMAKE_PROJECT_NAME} PRIVATE cxx_std_17)
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES
C_VISIBILITY_PRESET hidden
CXX_VISIBILITY_PRESET hidden)
if (DEFINED ENV{VST2_SDK_DIR})
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE
JUCE_PLUGINHOST_VST=1)
endif()
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE
JUCE_PLUGINHOST_AU=1
JUCE_PLUGINHOST_LADSPA=1
JUCE_PLUGINHOST_VST3=1
JUCE_USE_CURL=0
JUCE_WEB_BROWSER=0
JUCER_ENABLE_GPL_MODE=1
JUCE_DISPLAY_SPLASH_SCREEN=0
JUCE_REPORT_APP_USAGE=0
JUCE_MODAL_LOOPS_PERMITTED=1
JUCE_STRICT_REFCOUNTEDPOINTER=1
TRACKTION_ENABLE_TIMESTRETCH_SOUNDTOUCH=1
)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE
tracktion::tracktion_engine
tracktion::tracktion_graph
juce::juce_audio_devices
juce::juce_audio_processors
juce::juce_audio_utils
juce::juce_recommended_warning_flags)
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas")
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE "-latomic")
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE "-m64")
endif()
Raspberry
Hardware: BCM2711
Model: Raspberry Pi 400 Rev 1.0
OS: Raspian (32Bit)
I’m not sure if is a CMake, tracktion_engine and / or Linux issue.