This repository has been archived on 2025-01-25. You can view files and clone it, but cannot push or open issues or pull requests.
graham sanderson 46078742c7 Initial Release
2021-01-20 16:45:01 -06:00

38 lines
1.3 KiB
CMake

# 1 Create an INTERFACE library aggregating all the common parts of the application
add_library(common_stuff INTERFACE)
# note cmake policy is to use absolute paths for interface libraries.
target_sources(common_stuff INTERFACE
${CMAKE_CURRENT_LIST_DIR}/main.c
${CMAKE_CURRENT_LIST_DIR}/other.c
)
target_compile_definitions(common_stuff INTERFACE
A_DEFINE_THAT_IS_SHARED=123
)
# can include library dependencies here
target_link_libraries(common_stuff INTERFACE
pico_stdlib
)
# 2 Create the first executable including all the common stuff...
# we can set compile definitions for this executable here too. Because
# we depend on an INTERFACE library (common_stuff) we
# will pick up all of its definitions/dependencies too
add_executable(build_variant1)
target_link_libraries(build_variant1 common_stuff)
target_compile_definitions(build_variant1 PRIVATE
A_DEFINE_THAT_IS_NOT_SHARED=456)
pico_add_extra_outputs(build_variant1)
# 3 Create a second executable including all the common stuff
# this version also sets the DO_EXTRA define
add_executable(build_variant2)
target_link_libraries(build_variant2 common_stuff)
target_compile_definitions(build_variant2 PRIVATE
A_DEFINE_THAT_IS_NOT_SHARED=789
DO_EXTRA)
pico_add_extra_outputs(build_variant2)