Alias-Namen: | MODIFY-INCLUDE-SEARCH |
Mit dieser Anweisung wird festgelegt, welche Include-Bibliotheken und -Dateiverzeichnisse vom Compiler durchsucht werden sollen. Außerdem wird die Reihenfolge bestimmt, in der diese Bibliotheken und Dateiverzeichnisse durchsucht werden.
MODIFY-INCLUDE-LIBRARIES | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
USER-INCLUDE-LIBRARY =
Mit dieser Option können PLAM-Bibliotheken und POSIX-Dateiverzeichnisse angegeben werden, in denen die benutzereigenen Include-Dateien (angefordert mit #include "
..."
) stehen. Abhängig von der Option CURRENT-LIBRARY wird vor den mit USER-INCLUDE-LIBRARY angegebenen Bibliotheken und Dateiverzeichnissen zunächst die Bibliothek oder das Dateiverzeichnis derjenigen Quell- oder Include-Datei durchsucht, die die Include-Anweisung #include "
..."
enthält.
Wird die Option USER-INCLUDE-LIBRARY nicht angegeben, gilt folgende Voreinstellung:
USER-INCLUDE-LIBRARY = (*SOURCE-LIBRARY, *STANDARD-LIBRARY)
Include-Dateien, die in der #include
-Anweisung in Anführungszeichen angegeben werden (#include "
name"
), sucht der Compiler in der Bibliothek bzw. im Dateiverzeichnis des Quellprogramms und anschließend in den CRTE-Bibliotheken, die die Standard-Include-Dateien enthalten. In allen Sprachmodi wird die CRTE-Bibliothek $.SYSLIB.CRTE für die Suche zugewiesen. Im Sprachmodus Cfront-C++ wird vorher die CRTE-Bibliothek $.SYSLIB.CRTE.CPP zugewiesen. In den Sprachmodi C++ 2017 und C++ 2020 wird vorher die CRTE-Bibliothek für modernes C++ zugewiesen. Diese hängt von der Bibliotheks-Version ab. Bei Bibliotheks-Version 1 wird $.SYSLIB.CRTE.CXX01 zugewiesen, bei Bibliotheks-Version 2 ist es $.SYSLIB.CRTE.CXX02.
Wird die Option angegeben, ist die o.g. Voreinstellung ausgeschaltet und der Compiler durchsucht nur die explizit angegebenen Bibliotheken/Dateiverzeichnisse. Das heißt:
Wenn die Include-Dateien in der Bibliothek bzw. im Dateiverzeichnis des Quellprogramms und in den CRTE-Bibliotheken gesucht werden sollen, müssen die Optionswerte *SOURCE-LIBRARY und *STANDARD-LIBRARY explizit angegeben werden.
Die Bibliotheken/Dateiverzeichnisse werden in der Reihenfolge durchsucht, in der sie angegeben wurden.
USER-INCLUDE-LIBRARY = *UNCHANGED
Es gelten die Angaben der letzten MODIFY-INCLUDE-LIBRARY-Anweisung. Wenn seit dem Start des Compilers noch keine Werte verändert wurden, gelten die Standardeinstellungen des Compilers (*SOURCE-LIBRARY, *STANDARD-LIBRARY).
USER-INCLUDE-LIBRARY = *SOURCE-LIBRARY
Die angeforderte Include-Datei wird in der Bibliothek bzw. in dem Dateiverzeichnis gesucht, wo auch das Quellprogramm steht. Die Angabe *SOURCE-LIBRARY ist wirkungslos, wenn das Quellprogramm in einer katalogisierten BS2000-Datei steht und generell bei Quellprogrammeingabe über SYSDTA (siehe auch "Hinweise zur Eingabe über SYSDTA").
USER-INCLUDE-LIBRARY = *STANDARD-LIBRARY
In allen Sprachmodi wird die CRTE-Bibliothek $.SYSLIB.CRTE für die Suche zugewiesen. Im Sprachmodus Cfront-C++ wird vorher die CRTE-Bibliothek $.SYSLIB.CRTE.CPP zugewiesen. In den Sprachmodi C++ 2017 und C++ 2020 wird vorher die CRTE-Bibliothek für modernes C++ zugewiesen. Diese hängt von der Bibliotheks-Version ab. Bei Bibliotheks-Version 1 wird $.SYSLIB.CRTE.CXX01 zugewiesen, bei Bibliotheks-Version 2 ist es $.SYSLIB.CRTE.CXX02.
USER-INCLUDE-LIBRARY = <filename 1..54>
<filename> ist der Name der PLAM-Bibliothek, in der die angeforderten benutzereigenen Include-Dateien gesucht werden sollen.
USER-INCLUDE-LIBRARY = <posix-pathname>
<posix-pathname> ist der Name des POSIX-Dateiverzeichnisses, in dem die angeforderten benutzereigenen Include-Dateien gesucht werden sollen. Zur Beschreibung des Begriffs <posix-pathname> siehe "Compiler-Ein-/Ausgaben im POSIX-Dateisystem".
USER-INCLUDE-LIBRARY = *LINK(...)
LINK-NAME = <filename 1..8>
Statt eines katalogisierten PLAM-Bibliotheksnamens kann auch ein Linkname angegeben werden. <filename> ist der Linkname der zugewiesenen Include-Bibliothek. Er muss vor Aufruf des Compilers mit dem ADD-FILE-LINK-Kommando der PLAM-Bibliothek zugewiesen worden sein.
STD-INCLUDE-LIBRARY =
Mit dieser Option können PLAM-Bibliotheken und POSIX-Dateiverzeichnisse angegeben werden, in denen die Standard-Include-Dateien (angefordert mit #include <
...>
) stehen.
STD-INCLUDE-LIBRARY = *UNCHANGED
Es gelten die Angaben der letzten MODIFY-INCLUDE-LIBRARY-Anweisung. Wenn seit dem Start des Compilers noch keine Werte verändert wurden, gelten die Standardeinstellungen des Compilers (*USER-INCLUDE-LIBRARY, *STANDARD-LIBRARY).
STD-INCLUDE-LIBRARY = *USER-INCLUDE-LIBRARY
Die Suchreihenfolge für die Standard-Include-Dateien wird aus den Angaben in der USER-INCLUDE-LIBRARY-Option abgeleitet, wobei von dort nur die explizit angegebenen Bibliotheken/Dateiverzeichnisse berücksichtigt werden und nicht die Angaben *SOURCE-LIBRARY und *STANDARD-LIBRARY.
STD-INCLUDE-LIBRARY = *STANDARD-LIBRARY
In allen Sprachmodi wird die CRTE-Bibliothek $.SYSLIB.CRTE für die Suche zugewiesen. Im Sprachmodus Cfront-C++ wird vorher die CRTE-Bibliothek $.SYSLIB.CRTE.CPP zugewiesen. In den Sprachmodi C++ 2017 und C++ 2020 wird vorher die CRTE-Bibliothek für modernes C++ zugewiesen. Diese hängt von der Bibliotheks-Version ab. Bei Bibliotheks-Version 1 wird $.SYSLIB.CRTE.CXX01 zugewiesen, bei Bibliotheks-Version 2 ist es $.SYSLIB.CRTE.CXX02.
Beachten Sie die Hinweise zu den Standard-Include-Dateien bei Verwendung der POSIX-Bibliotheksfunktionen.
STD-INCLUDE-LIBRARY = <filename 1..54>
<filename> ist der Name der PLAM-Bibliothek, in der die angeforderten Standard-Include-Dateien gesucht werden sollen.
STD-INCLUDE-LIBRARY = <posix-pathname>
<posix-pathname> ist der Name des POSIX-Dateiverzeichnisses, in dem die angeforderten Standard-Include-Dateien gesucht werden sollen. Zur Beschreibung des Begriffs <posix-pathname> siehe "Compiler-Ein-/Ausgaben im POSIX-Dateisystem".
Diese Angabe ist für die Standard-Includes des CRTE nicht sinnvoll, da diese aus den CRTE-Bibliotheken genommen werden sollen.
STD-INCLUDE-LIBRARY = *LINK(...)
LINK-NAME = <filename 1..8>
Statt eines katalogisierten PLAM-Bibliotheksnamens kann auch ein Linkname angegeben werden. <filename> ist der Linkname der zugewiesenen Include-Bibliothek. Er muss vor Aufruf des Compilers mit dem ADD-FILE-LINK-Kommando der PLAM-Bibliothek zugewiesen worden sein.
CURRENT-LIBRARY = *UNCHANGED / *YES / *NO
Diese Option betrifft die Suche nach Include-Dateien, die mit #include "
..."
angefordert werden.
*YES: Standardmäßig werden die Include-Dateien zunächst in der Bibliothek oder dem Dateiverzeichnis derjenigen Quell- oder Include-Datei gesucht, die die #include
-Anweisung enthält und anschließend erst in den mit der Option USER-INCLUDE-LIBRARY angegebenen Dateiverzeichnissen/Bibliotheken. Dies entspricht dem Verhalten des Compilers im POSIX.
Steht das Quellprogramm in einer katalogisierten BS2000-Datei, werden Include-Dateien unter den katalogisierten BS2000-Dateien gesucht.
*NO: Bei Angabe von *NO werden nur die mit USER-INCLUDE-LIBRARY angegebenen Dateiverzeichnissen/Bibliotheken durchsucht. Dies entspricht dem Verhalten der Vorgänger-Compiler C und C++ V2.2.
Standard-Include-Dateien für die POSIX-Bibliotheksfunktionen
Die für die Verwendung der POSIX-Bibliotheksfunktionen notwendigen Standard-Include-Dateien sind nicht in der Bibliothek $.SYSLIB.CRTE enthalten, sondern in der mit BS2000/OSD-BC ausgelieferten Bibliothek $.SYSLIB.POSIX-HEADER. Diese Bibliothek muss immer zusätzlich zur Bibliothek $.SYSLIB.CRTE angegeben werden, wenn das Programm POSIX-Funktionen verwendet. Außerdem muss vor Auftreten der ersten #include
-Anweisung im Programm das Define _OSD_POSIX
gesetzt sein. Dies ist z.B. sichergestellt, wenn die Definition bei der Übersetzung mit der DEFINE-Option in der MODIFY-SOURCE-PROPERTIES-Anweisung erfolgt.
Beispiele zur MODIFY-INCLUDE-LIBRARY-Anweisung
Beispiel 1
Das Quellprogramm steht in einer PLAM-Bibliothek namens PLAM.SOURCE. Als Sprachmodus ist erweitertes C11 eingeschaltet.
Das Quellprogramm enthält die Anweisung
#include "incl.h"
Der Benutzer macht folgende Angaben:
//MODIFY-INCLUDE-LIBRARIES USER-INCL-LIB=(*STANDARD-LIBRARY,LIB1,- //*LINK(LIB2),*SOURCE-LIBRARY,’/home/user-incl’)
Da die Option CURRENT-LIBRARY nicht angegeben wird, gilt CURRENT-LIBRARY=*YES.
Suchablauf:
Die Include-Datei "incl.h"
wird der Reihe nach in folgenden Bibliotheken/Dateiverzeichnissen gesucht:
PLAM.SOURCE | (Auf Grund der Option CURRENT-LIBRARY=*YES die Bibliothek |
$.SYSLIB.CRTE | (Standard-Include-Bibliothek) |
LIB1 | (Bibliothek mit dem Namen LIB1) |
LIB2 | (Bibliothek mit dem Linknamen LIB2) |
PLAM.SOURCE | (Bibliothek des Quellprogramms) |
/home/user-incl | (POSIX-Dateiverzeichnis mit dem Namen /home/user-incl) |
Beispiel 2
Das Quellprogramm steht in einer PLAM-Bibliothek namens PLAM.SRC. Als Sprachmodus ist Cfront-C++ eingeschaltet.
Der Benutzer macht folgende Angaben:
//MODIFY-INCLUDE-LIBRARIES USER-INCLUDE-LIBRARY = ($XYZ.LIB,- //*SOURCE-LIBRARY, LIB1),STD-INCLUDE-LIBRARY = (*USER-INCLUDE-LIBRARY,- //*STANDARD-LIBRARY),CURRENT-LIBRARY = *NO
Die Suche nach den Include-Dateien gestaltet sich wie folgt:
|
|
$XYZ.LIB | $XYZ.LIB |
Beispiel 3
Das Quellprogramm steht in dem POSIX-Dateiverzeichnis /home/xy/src
. Als Sprachmodus ist erweitertes C11 eingeschaltet.
Der Benutzer macht folgende Angaben:
//MODIFY-INCLUDE-LIBRARIES - //USER-INCLUDE-LIBRARY=(*SOURCE-LIBRARY, ’/home/xy/incl1’, *STANDARD-LIBRARY),- //STD-INCLUDE-LIBRARY=(*STANDARD-LIBRARY, $.SYSLIB.POSIX-HEADER,- //*USER-INCLUDE-LIBRARY,’/home/xy/incl2’),CURRENT-LIBRARY=*NO
Die Suche nach den Include-Dateien gestaltet sich wie folgt:
|
|
/home/xy/src | $.SYSLIB.CRTE |