[Scons-users] Building object files in multiple environments
Bill Deegan
bill at baddogconsulting.com
Wed Nov 8 11:39:25 EST 2017
I'd suggest you us VariantDir per device.
That's likely the simplest solution.
You won't have to change much.
On Wed, Nov 8, 2017 at 1:48 AM, Dan Čermák <dan.cermak at cgc-instruments.com>
wrote:
> Hi Folks,
>
> I am currently using SCons for a big mono-repo C++ Firmware, where I
> have lots of common source files and then a directory where the actual
> firmware for each device is (this is just a .cpp file with device
> specific configurations and the appropriate high-level logic).
>
> For illustration purposes, the directory structure looks something like
> this:
> .
> ├── devices
> │ ├── Device_A
> │ │ ├── main.cpp
> │ │ ├── SConscript
> │ │ ├── uart.cpp
> │ │ └── uart.hpp
> │ ├── Device_B
> │ │ ├── main.cpp
> │ │ └── SConscript
> │ └── SConscript
> ├── spi
> │ └── config.cpp
> ├── uart
> │ └── uart.cpp
> ├── util
> │ └── endian.c
> └── SConstruct
>
> The idea behind this is that everything outside of 'devices' is
> considered as common files and build into object files. Every
> subdirectory of devices should have a SConscript that creates a single
> binary file (this is the firmware for the specific device) that is
> linked with the common object files.
>
> I have achieved this by creating object files for every cpp file not in
> devices/ and passing them to the SConscript in devices/. However, there
> is a catch: I would like to build everything under devices with an
> additional include path (the top level directory of the project) which
> should not be propagated to the common object files. I therefore tried
> creating a clone of the environment for each device in
> devices/SConscript and then doing the following in
> devices/Device_A/SConscript:
>
> Import('env_clone', 'obj')
>
> local_obj = env_clone.Object(Glob('*.cpp'))
> prog = env_clone.Program('Device_A_bin', local_obj + obj)
>
> Return('prog')
>
> where env_clone is the cloned environment with the additional include
> path and obj the list of object files that are common to all
> devices (which have been created in the environment env from which
> env_clone was cloned). This however causes SCons to complain, that there
> are object files in multiple environments with the same build command.
>
>
> My guess is, that my solution of cloning environments is not the correct
> way. Does someone have an idea how to achieve this with SCons?
>
>
> Thanks in advance,
>
> Dan
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20171108/9b2f2467/attachment.html>
More information about the Scons-users
mailing list