Ich habe ein großes Projekt, wo die Verwendung der Swig-includeall Flag scheint sinnvoll zu sein. Es gibt jedoch bestimmte Dateien, die ich nicht erweitern möchte, hauptsächlich die STL-Bibliotheken (z. B. Vektor und Liste). Ist es möglich, das Flag-includeall zu verwenden, aber bestimmte Dateien aus der Erweiterung zu entfernen (wie Vektor und Liste)?Swig -includeall außer ...
Antwort
Ich bin kein Experte in SWIG, aber einen Blick auf documentation for latest version und Quellcode (speziell auf die Source/Modules/main.cxx
Datei, wo Befehlszeilenargumente gelesen werden), ist klar, dass eine solche Option nicht existiert (auch nicht ein versteckter).
Auf der anderen Seite, wenn Sie das Gefühl haben, können Sie den Quellcode sehr leicht ändern, um dies zu tun.
Sie können in der Datei main.cxx
eine neue Befehlszeilenoption hinzufügen, um auszuschließende Dateinamen hinzuzufügen und diese Namen dann zu vergleichen, um eine Übereinstimmung zu finden. Sie können eine globale Funktion in der Datei Source/Preprocessor/preprocessor.h
hinzufügen, die bereits in main.cxx
enthalten ist.
Der Code für die Option -includeall
ist in Source/Preprocessor/cpp.c
. In dieser Datei gibt es auch eine globale Variable mit dem Namen include_all
, die auf 1
gesetzt wird, wenn das analoge Argument in der Befehlszeile gesetzt wird (es wird Sie führen, um zu finden, wo diese Option auch ausgeführt wird).
, jetzt in der Preprocessor_parse(...)
Funktion können Sie feststellen, wo die Header-Dateien analysiert werden (in Zeile 1715 für Version 3.0.12 Start):
s1 = cpp_include(fn, sysfile);
if (s1) {
/* ....... */
}
Sie werden in der String *Swig_last_file(void)
Funktion interessiert sein, das zurück Der Dateiname der gerade analysierten Kopfzeile.
s1 = cpp_include(fn, sysfile);
if (s1) {
int found = 0;
String* filename = Swig_last_file();
/* Here find for a match in the exclusion list */
if (!found) { /* keep working as usual */
/* ....... */
} /* if found, just ignore the include directive for that file */
Delete(s1);
}
Ich weiß, es ist keine vollständige Lösung, aber Hoffnung kann Ihnen helfen, das gewünschte Verhalten zu erhalten.
- 1. CMake, SWIG & shared library
- 2. CL und SWIG: Arbeitsbeispiel?
- 3. Problem mit Glas INCLUDEALL und Migration Federverschluß 1.4
- 4. SWIG: Fehler: "stdexcept" konnte nicht gefunden werden
- 5. Erweitern Python - zu swig, nicht zu swig oder Cython
- 6. SWIG TCL Statische Verknüpfung
- 7. SWIG-Fehler wegen Präprozessordirektive
- 8. Swig, Python und Ausgabestrings
- 9. SWIG Verlust von Strukturen
- 10. Debug SWIG% ignorieren
- 11. Swig/Python Speicherleck erkannt
- 12. SWIG: Aufruf von Python
- 13. SWIG Installation Boost Fehler
- 14. SWIG stürzt Python
- 15. Node.JS Consolidate und Swig
- 16. SWIG, Python und Zeiger
- 17. erweitern 'unvollständige' Typen (SWIG)
- 18. SWIG Python Structure Array
- 19. SWIG Syntaxfehler bei der Definition bool
- 20. Wie Aufzählung Mitglieder mit SWIG
- 21. swig kein Modul namens _Beispiel
- 22. Mit SWIG typemaps mit java
- 23. SWIG C++ Vektorzugriff in Python
- 24. Wie abgerundet in Swig Vorlage
- 25. SWIG C++ Struktur zu Java
- 26. Swig und Zeiger Probleme (Python)
- 27. SWIG Cmake inkonsistente DLL-Verknüpfung
- 28. swig Makro $ Descriptor innerhalb Hilfsfunktion
- 29. SWIG-PHP/VS2013: Linker Fehler
- 30. Umgang mit unique_ptrs mit SWIG