38 lines
1.3 KiB
CMake
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)
|
|
|