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