db41258d16
Ersetzt das Geruest (counter/notebook) durch ein echtes Beispiel und teilt es in zwei eigenstaendige Projekte, wie P1204R0 es fuer Bibliothek plus Programm verlangt. libpda: textfile (C, Datei-I/O und Feld-Escaping), calculator (Recursive-Descent-Parser mit std::expected), contact, editor, explorer. Exportiert pda::pda ueber install(EXPORT) und ist per find_package(pda) benutzbar. pda: Shell ohne Ein-/Ausgabe (execute() gibt Text zurueck, deshalb ohne Terminal testbar), REPL und Stapelbetrieb in main.cpp. examples/consumer und tools/check-install.sh pruefen die Export-Kette Ende-zu-Ende: installieren, dann ein fremdes Projekt dagegen bauen. docs/CMAKE.md erklaert das Target-Modell, PUBLIC/PRIVATE/INTERFACE, Generator-Ausdruecke, install/export und Symbolsichtbarkeit an diesem Projekt. 71 Tests gruen unter Homebrew-clang 22, Apple clang und GCC 16, statisch und shared, mit und ohne ASan/UBSan. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
29 lines
1.1 KiB
CMake
29 lines
1.1 KiB
CMake
# ---------------------------------------------------------------------------
|
|
# Vorlage fuer pdaConfig.cmake -- die Datei, die find_package(pda) sucht.
|
|
#
|
|
# Sie wird von configure_package_config_file() in libpda/CMakeLists.txt
|
|
# verarbeitet. Das @-Zeichen-Paar unten wird dabei durch CMake-Code ersetzt,
|
|
# der die Pfade relativ zum tatsaechlichen Installationsort aufloest.
|
|
#
|
|
# Ein von Hand geschriebenes Config-File mit absoluten Pfaden funktioniert nur
|
|
# auf dem Rechner, auf dem installiert wurde.
|
|
# ---------------------------------------------------------------------------
|
|
@PACKAGE_INIT@
|
|
|
|
include(CMakeFindDependencyMacro)
|
|
|
|
# Haette libpda externe Abhaengigkeiten, stuenden sie HIER:
|
|
#
|
|
# find_dependency(ZLIB REQUIRED)
|
|
#
|
|
# Das ist Pflicht, nicht Kuer: pdaTargets.cmake verweist auf ZLIB::ZLIB, und
|
|
# dieses Target existiert im Projekt des Benutzers nur, wenn es vorher
|
|
# gefunden wurde. Ohne find_dependency scheitert find_package(pda) mit
|
|
# "target ZLIB::ZLIB not found" -- einer der unverstaendlichsten CMake-Fehler.
|
|
#
|
|
# libpda hat aktuell keine, deshalb steht hier nichts.
|
|
|
|
include("${CMAKE_CURRENT_LIST_DIR}/pdaTargets.cmake")
|
|
|
|
check_required_components(pda)
|