Am 26. Juni 2019 15:53:16 MESZ schrieb Torsten Robitzki <tors...@robitzki.de>: >Hello, > >I have a project, where binaries are build for an embedded platform and >for a PC platform. To build software update packages for the embedded >platforms (files that can be used to make in the field firmware >updates), tools that have to run during the build have to be build from >source first. For example firmware.tfp have to be build by running >create_package with firmware.bin. firmware.bin have to build with >settings for the embedded platform and create_package have to be build >with setting of the build host. > >I’ve asked this question already a year or so ago and got the response, >that using super builds will help me. Now I try to convert the project >to a super build structure. Fortunately, there was very little content >inside my main CMakeLists.txt, mainly `add_subdirectory( source )`. >Mainly, I want to build different sets of artifacts from the same >source tree, but with different > >Now I’m stuck with a number of issues. First, I want to build all >firmware binaries for the NRF52 embedded platform: > > ExternalProject_Add(firmware_binaries > SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/source > INSTALL_DIR ${installDir} > CMAKE_ARGS > -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> > -DBOOTLOADER_AES_KEY=${BOOTLOADER_AES_KEY} > -DBOOTLOADER_VERSION=${BOOTLOADER_VERSION} > -DBUILD_DEBUG=1 > -DBUILD_NRF52=1 >BUILD_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR} >--target firmware_binaries > )
The build command is using the wrong directory. >I don’t want to build any EOL test firmware, test-tools etc. just the >stuff that will be shipped, thus the explicit target. I can build the >firmware_binaries, from the source directly, without problems. But when >I try to build with the top-level cmake file, that contains the >ExternalProject_Add(), I get the usual configure output and then: > >-- Configuring done >-- Generating done >-- Build files have been written to: >/Users/todi/blueswd_firmware/build/firmware_binaries-prefix/src/firmware_binaries-build >[ 75%] Performing build step for 'firmware_binaries' >[ 12%] Performing build step for 'firmware_binaries' >[ 12%] Performing build step for 'firmware_binaries' >[ 12%] Performing build step for ‚firmware_binaries‘ >… > >This line repeats until make reports: > >make[776]: /usr/local/Cellar/cmake/3.14.3/bin/cmake: Resource >temporarily unavailable >make[776]: *** wait: No child processes. Stop. >make[776]: *** Waiting for unfinished jobs.... >make[776]: *** wait: No child processes. Stop. > >Any idea, what might be wrong here? Some kind of recursion? > >An other issue: I want to forward targets to the super build, so that I >can build them there. For example I have ~30 unit test programs and >when I’m working in a certain area, I usually want to build exactly one >of this programs. Is it possible to export them as targets of the super >build? > >A third issue that I have is, that changes to the CMakeLists.txt files >in the Project are not reflected by the super build. If I make a change >to one of the CMake files under ${CMAKE_CURRENT_LIST_DIR}/source, I >usually have to delete the whole build folder and start from scratch >with the build. Is there an other way to force the super build to >recognize the changes? (Note: ${CMAKE_CURRENT_LIST_DIR}/source is not >added as subdirectory to the top level (super build) CMakeLists.txt). > >best regards, > >Torsten > >P.S.: >$ cmake --version >cmake version 3.14.3 -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake