11cmake_minimum_required (VERSION  3.12)
22
3- # Pull in SDK (must be before project) 
4- include (pico_sdk_import.cmake)
5- include (pico_extras_import_optional.cmake)
3+ if  (NOT  CMAKE_PROJECT_NAME )
4+     # Pull in SDK (must be before project) 
5+     include (${CMAKE_CURRENT_LIST_DIR} /pico_sdk_import.cmake)
6+     include (${CMAKE_CURRENT_LIST_DIR} /pico_extras_import_optional.cmake)
67
7- project (pico_examples C CXX ASM)
8+     pico_is_top_level_project(PICO_EXAMPLES_TOP_LEVEL_PROJECT)
9+ 
10+     if  (PICO_EXAMPLES_TOP_LEVEL_PROJECT)
11+         project (pico_examples C CXX ASM)
12+     else ()
13+         # Go back to individual example for project 
14+         return ()
15+     endif ()
16+ endif ()
817
918set (CMAKE_C_STANDARD 11)
1019set (CMAKE_CXX_STANDARD 17)
@@ -13,7 +22,7 @@ if (PICO_SDK_VERSION_STRING VERSION_LESS "2.1.0")
1322    message (FATAL_ERROR "Raspberry Pi Pico SDK version 2.1.0 (or later) required. Your version is ${PICO_SDK_VERSION_STRING} " )
1423endif ()
1524
16- set (PICO_EXAMPLES_PATH ${PROJECT_SOURCE_DIR } )
25+ set (PICO_EXAMPLES_PATH ${CMAKE_CURRENT_LIST_DIR } )
1726
1827# If you want debug output from USB (pass -DPICO_STDIO_USB=1) this ensures you don't lose any debug output while USB is set up 
1928if  (NOT  DEFINED  PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS)
@@ -23,7 +32,7 @@ endif()
2332# Initialize the SDK 
2433pico_sdk_init()
2534
26- include (example_auto_set_url.cmake)
35+ include (${CMAKE_CURRENT_LIST_DIR} / example_auto_set_url.cmake)
2736
2837function (add_subdirectory_exclude_platforms NAME )
2938    if  (ARGN)
@@ -42,13 +51,6 @@ function(add_subdirectory_exclude_platforms NAME)
4251    add_subdirectory (${NAME} )
4352endfunction ()
4453
45- # Add blink example 
46- add_subdirectory_exclude_platforms(blink)
47- add_subdirectory_exclude_platforms(blink_simple)
48- 
49- # Add hello world example 
50- add_subdirectory_exclude_platforms(hello_world)
51- 
5254add_compile_options (-Wall
5355        -Wno-format          # int != int32_t as far as the compiler is concerned because gcc has int32_t as long int 
5456        -Wno-unused-function # we have some for the docs that aren't called 
@@ -57,34 +59,43 @@ if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
5759    add_compile_options (-Wno-maybe-uninitialized)
5860endif ()
5961
60- # Hardware-specific examples in subdirectories: 
61- add_subdirectory (adc)
62- add_subdirectory (binary_info)
63- add_subdirectory (bootloaders)
64- add_subdirectory (clocks)
65- add_subdirectory (cmake)
66- add_subdirectory (dcp)
67- add_subdirectory (divider)
68- add_subdirectory (dma)
69- add_subdirectory (flash)
70- add_subdirectory (gpio)
71- add_subdirectory (hstx)
72- add_subdirectory (i2c)
73- add_subdirectory (interp)
74- add_subdirectory (multicore)
75- add_subdirectory (otp)
76- add_subdirectory (picoboard)
77- add_subdirectory (pico_w)
78- add_subdirectory (pio)
79- add_subdirectory (pwm)
80- add_subdirectory (reset)
81- add_subdirectory (rtc)
82- add_subdirectory (spi)
83- add_subdirectory (system )
84- add_subdirectory (timer)
85- add_subdirectory (uart)
86- add_subdirectory (universal)
87- add_subdirectory (usb)
88- add_subdirectory (watchdog)
89- add_subdirectory (sha)
90- add_subdirectory (freertos)
62+ if  (PICO_EXAMPLES_TOP_LEVEL_PROJECT)
63+     # Add blink example 
64+     add_subdirectory_exclude_platforms(blink)
65+     add_subdirectory_exclude_platforms(blink_simple)
66+ 
67+     # Add hello world example 
68+     add_subdirectory_exclude_platforms(hello_world)
69+ 
70+     # Hardware-specific examples in subdirectories: 
71+     add_subdirectory (adc)
72+     add_subdirectory (binary_info)
73+     add_subdirectory (bootloaders)
74+     add_subdirectory (clocks)
75+     add_subdirectory (cmake)
76+     add_subdirectory (dcp)
77+     add_subdirectory (divider)
78+     add_subdirectory (dma)
79+     add_subdirectory (flash)
80+     add_subdirectory (gpio)
81+     add_subdirectory (hstx)
82+     add_subdirectory (i2c)
83+     add_subdirectory (interp)
84+     add_subdirectory (multicore)
85+     add_subdirectory (otp)
86+     add_subdirectory (picoboard)
87+     add_subdirectory (pico_w)
88+     add_subdirectory (pio)
89+     add_subdirectory (pwm)
90+     add_subdirectory (reset)
91+     add_subdirectory (rtc)
92+     add_subdirectory (spi)
93+     add_subdirectory (system )
94+     add_subdirectory (timer)
95+     add_subdirectory (uart)
96+     add_subdirectory (universal)
97+     add_subdirectory (usb)
98+     add_subdirectory (watchdog)
99+     add_subdirectory (sha)
100+     add_subdirectory (freertos)
101+ endif ()
0 commit comments