Windows Raspberry Pi Pico C/C++ pico-examples以外の場所でビルドしてみる

#概要
公式サンプルpico-examplesのビルドは出来たので
自作のソースコードをビルドすることを想定して
pico-examples以外の場所以外でビルドできるか試してみました。


##フォルダ構成
とりあえず適当な場所にworkフォルダを作ってpico-examplesのhello_pwm.cを入れてビルドしてみます。

```
work
  │  CMakeLists.txt
  │  hello_pwm.c
  │  pico_sdk_import.cmake
  │
  └─build
```

pico_sdk_import.cmakeはpico-sdk\externalに入っているものをコピーして入れておきます。

#CMakeLists.txtの中身
CMakeLists.txtはこんな感じ

```CMakeLists.txt
cmake_minimum_required(VERSION 3.12)

# Pull in SDK (must be before project)
include(pico_sdk_import.cmake)

project(hello_pwm C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)


# Initialize the SDK
pico_sdk_init()


add_executable(hello_pwm
        hello_pwm.c
        )

# Pull in our pico_stdlib which pulls in commonly used features
target_link_libraries(hello_pwm pico_stdlib hardware_pwm)

# create map/bin/hex file etc.
pico_add_extra_outputs(hello_pwm)

```
#ビルド
あとはpico-examplesのときと同じようにコマンドを打つだけです。

```
C:\raspi_pico\work\build>cmake -G "NMake Makefiles" ..
PICO_SDK_PATH is C:/raspi_pico/pico-sdk
PICO platform is rp2040.
PICO compiler is
PICO_GCC_TRIPLE defaulted to arm-none-eabi
PICO target board is pico.
Using board configuration from C:/raspi_pico/pico-sdk/src/boards/include/boards/pico.h
TinyUSB available at C:/raspi_pico/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040; adding USB support.
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
ELF2UF2 will need to be built
-- Configuring done
-- Generating done
-- Build files have been written to: C:/raspi_pico/work/build

C:\raspi_pico\work\build>nmake

Microsoft(R) Program Maintenance Utility Version 14.28.29915.0
Copyright (C) Microsoft Corporation.  All rights reserved.

[  1%] Creating directories for 'ELF2UF2Build'
[  3%] No download step for 'ELF2UF2Build'
[  5%] No update step for 'ELF2UF2Build'
[  6%] No patch step for 'ELF2UF2Build'
[  8%] Performing configure step for 'ELF2UF2Build'
-- The C compiler identification is MSVC 19.28.29915.0
-- The CXX compiler identification is MSVC 19.28.29915.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29910/bin/Hostx86/x86/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29910/bin/Hostx86/x86/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/raspi_pico/work/build/elf2uf2
[ 10%] Performing build step for 'ELF2UF2Build'

Microsoft(R) Program Maintenance Utility Version 14.28.29915.0
Copyright (C) Microsoft Corporation.  All rights reserved.

[ 50%] Building CXX object CMakeFiles/elf2uf2.dir/main.cpp.obj
main.cpp
・＜・ インクルード ファイル:  C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\cstdio
・＜・ インクルード ファイル:     C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\sal.h
・＜・ インクルード ファイル:      C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\concurrencysal.h
・＜・ インクルード ファイル:     C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\vadefs.h
・＜・ インクルード ファイル:   C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\stdio.h
・＜・ インクルード ファイル:    C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt.h
・＜・ インクルード ファイル:    C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_wstdio.h
・＜・ インクルード ファイル:  C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\map
・＜・ インクルード ファイル:    C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\type_traits
・＜・ インクルード ファイル:     C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\xstddef
・＜・ インクルード ファイル:      C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\cstddef
・＜・ インクルード ファイル:      C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\cstdlib
・＜・ インクルード ファイル:        C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_math.h
・＜・ インクルード ファイル:       C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\stdlib.h
・＜・ インクルード ファイル:        C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_search.h
・＜・ インクルード ファイル:        C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_wstdlib.h
・＜・ インクルード ファイル:        C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\limits.h
・＜・ インクルード ファイル:      C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\initializer_list
・＜・ インクルード ファイル:    C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\xutility
・＜・ インクルード ファイル:      C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\crtdbg.h
・＜・ インクルード ファイル:      C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\crtdefs.h
・＜・ インクルード ファイル:      C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\use_ansi.h
・＜・ インクルード ファイル:     C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\climits
・＜・ インクルード ファイル:       C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_memory.h
・＜・ インクルード ファイル:         C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\vcruntime_string.h
・＜・ インクルード ファイル:       C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_wstring.h
・＜・ インクルード ファイル:     C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\utility
・＜・ インクルード ファイル:   C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\xtree
・＜・ インクルード ファイル:     C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\limits
・＜・ インクルード ファイル:       C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\float.h
・＜・ インクルード ファイル:      C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\cwchar
・＜・ インクルード ファイル:        C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_wctype.h
・＜・ インクルード ファイル:        C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_wdirect.h
・＜・ インクルード ファイル:        C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_wio.h
・＜・ インクルード ファイル:        C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_wprocess.h
・＜・ インクルード ファイル:        C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_wtime.h
・＜・ インクルード ファイル:        C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\sys/stat.h
・＜・ インクルード ファイル:      C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\intrin0.h
・＜・ インクルード ファイル:      C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\isa_availability.h
・＜・ インクルード ファイル:     C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\new
・＜・ インクルード ファイル:       C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\vcruntime_exception.h
・＜・ インクルード ファイル:         C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\corecrt_terminate.h
・＜・ インクルード ファイル:     C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\xatomic.h
・＜・ インクルード ファイル:  C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\vector
・＜・ インクルード ファイル:  C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\cstdarg
・＜・ インクルード ファイル:  C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\algorithm
・＜・ インクルード ファイル:  C:\raspi_pico\pico-sdk\src\common\boot_uf2\include\boot/uf2.h
・＜・ インクルード ファイル:  C:\raspi_pico\pico-sdk\tools\elf2uf2\elf.h
C:\raspi_pico\pico-sdk\tools\elf2uf2\main.cpp(328): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\raspi_pico\pico-sdk\tools\elf2uf2\main.cpp(334): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
[100%] Linking CXX executable elf2uf2.exe
[100%] Built target elf2uf2
[ 11%] No install step for 'ELF2UF2Build'
[ 13%] Completed 'ELF2UF2Build'
[ 13%] Built target ELF2UF2Build
Scanning dependencies of target bs2_default
[ 15%] Building ASM object pico-sdk/src/rp2_common/boot_stage2/CMakeFiles/bs2_default.dir/compile_time_choice.S.obj
[ 16%] Linking ASM executable bs2_default.elf
[ 16%] Built target bs2_default
[ 18%] Generating bs2_default.bin
[ 20%] Generating bs2_default_padded_checksummed.S
[ 20%] Built target bs2_default_padded_checksummed_asm
Scanning dependencies of target hello_pwm
[ 22%] Building C object CMakeFiles/hello_pwm.dir/hello_pwm.c.obj
[ 23%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.obj
[ 25%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.obj
[ 27%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_claim/claim.c.obj
[ 28%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_sync/sync.c.obj
[ 30%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_platform/platform.c.obj
[ 32%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_uart/uart.c.obj
[ 33%] Building ASM object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_divider/divider.S.obj
[ 35%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/common/pico_time/time.c.obj
[ 37%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/common/pico_time/timeout_helper.c.obj
[ 38%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_timer/timer.c.obj
[ 40%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/common/pico_sync/sem.c.obj
[ 42%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/common/pico_sync/lock_core.c.obj
[ 44%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/common/pico_sync/mutex.c.obj
[ 45%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/common/pico_sync/critical_section.c.obj
[ 47%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/common/pico_util/datetime.c.obj
[ 49%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/common/pico_util/pheap.c.obj
[ 50%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/common/pico_util/queue.c.obj
[ 52%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_runtime/runtime.c.obj
[ 54%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.obj
[ 55%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.obj
[ 57%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.obj
[ 59%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_pll/pll.c.obj
[ 61%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.obj
[ 62%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_irq/irq.c.obj
[ 64%] Building ASM object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.S.obj
[ 66%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_printf/printf.c.obj
[ 67%] Building ASM object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S.obj
[ 69%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.obj
[ 71%] Building ASM object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_divider/divider.S.obj
[ 72%] Building ASM object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_double/double_aeabi.S.obj
[ 74%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_double/double_init_rom.c.obj
[ 76%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_double/double_math.c.obj
[ 77%] Building ASM object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_double/double_v1_rom_shim.S.obj
[ 79%] Building ASM object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S.obj
[ 81%] Building ASM object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_float/float_aeabi.S.obj
[ 83%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_float/float_init_rom.c.obj
[ 84%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_float/float_math.c.obj
[ 86%] Building ASM object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_float/float_v1_rom_shim.S.obj
[ 88%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.obj
[ 89%] Building ASM object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S.obj
[ 91%] Building ASM object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_standard_link/crt0.S.obj
[ 93%] Building CXX object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.obj
[ 94%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.obj
[ 96%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_stdio/stdio.c.obj
[ 98%] Building C object CMakeFiles/hello_pwm.dir/C_/raspi_pico/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.obj
[100%] Linking CXX executable hello_pwm.elf
[100%] Built target hello_pwm

```