globale header file in cmakelists

Gast #6589115
Lesenswert?
• ▲
▼
Hallo,
wie muss ich in CMakeLists eine Headerfile einbinden, damit diese global 
gefunden werden kann, ohne sie noch zusätzlich in der .c datei 
anzugeben?
Es ist eine header (options.h), wo verschiedene sachen definiert sind, 
die überhall benutzt werden können.

hatte es versucht mit
1
set(GLOBAL_HEADER_FILE ../../../../options/options.h)
2
add_executable(TEST ${SRC_FILES} ${MODUL_SOURCE_FILES} ${GLOBAL_HEADER_FILE})
doch ein define, welches in options.h gesetzt ist wird nicht gefunden
#6589341
Lesenswert?
• ▲
▼
lars schrieb:
> eine Headerfile einbinden, damit diese global gefunden werden kann, ohne
> sie noch zusätzlich in der .c datei anzugeben?

Jede Quelltext-Datei inkludiert diejenigen Header, die sie braucht, um 
ordnungsgemäß übersetzt werden zu können. Mehrfaches Inkludieren wird 
durch "include guards" verhindert. Dann hast Du eine saubere Struktur.
#6589554
Lesenswert?
• ▲
▼
Dass es dafür ein eigenes CMake-Kommando gibt, glaube ich nicht. Aber 
man kann ein entsprechendes Compiler-Flag definieren.
1
add_compile_options(-include ${GLOBAL_HEADER_FILE})
Aber wie meine Vorredner schon schrieben, sollte man sowas eher 
vermeiden.

Ach ja:

Sowas sollte man auch vermeiden:

lars schrieb:
> set(GLOBAL_HEADER_FILE ../../../../options/options.h)

Du solltest die Pfade immer über die passenden CMake-Variablen angeben, 
also z.B. 
https://cmake.org/cmake/help/latest/variable/CMAKE_SOURCE_DIR.html . 
Wenn du dein build-Dir wo anders anlegst, findet der sonst den Header 
nicht mehr.
#6590718
Lesenswert?
• ▲
▼
Rolf M. schrieb:
> Aber
> man kann ein entsprechendes Compiler-Flag definieren.

Das hat immer noch das Problem, dass die Abhängigkeit von options.h 
verlorengeht und Änderungen in options.h nicht zum neucompilieren 
führen.
Diese Abhängigkeit über Umwege in cmake reinzupfuschen ist überaus 
ekelhaft.

Meistens ist es zielführend, Werkzeuge so zu benutzen wie sie gedacht 
sind.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.