Tôi có một dự án lớn, nơi sử dụng cờ Swig -includeall có vẻ hợp lý. Tuy nhiên, có một số tệp nhất định mà tôi không muốn mở rộng, chủ yếu là các thư viện STL (ví dụ: vectơ và danh sách). Có thể sử dụng cờ -includeall, nhưng để liệt kê một số tệp nhất định khỏi việc mở rộng (như vectơ và danh sách)?Swig -includeall ngoại trừ ...
Trả lời
Tôi không phải là chuyên gia trong SWIG nhưng hãy xem cả hai mã documentation for latest version và mã nguồn (cụ thể là tệp Source/Modules/main.cxx
, nơi đối số dòng lệnh được đọc), rõ ràng là tùy chọn đó không tồn tại (thậm chí không một ẩn).
Mặt khác, nếu bạn cảm thấy như bạn có thể sửa đổi mã nguồn khá dễ dàng để làm như vậy.
Bạn có thể thêm tùy chọn dòng lệnh mới trong tệp main.cxx
để thêm tên tệp để loại trừ và sau đó so sánh các tên như vậy để tìm kết quả phù hợp. Bạn có thể thêm chức năng toàn cục vào tệp Source/Preprocessor/preprocessor.h
, đã được bao gồm bởi main.cxx
.
Mã cho tùy chọn -includeall
nằm ở Source/Preprocessor/cpp.c
. Trong tệp đó, cũng có một biến toàn cầu có tên là include_all
được đặt thành 1
khi đối số tương tự được đặt trong dòng lệnh (nó sẽ hướng dẫn bạn tìm nơi thực hiện tùy chọn đó quá).
Bây giờ, trong Preprocessor_parse(...)
chức năng bạn có thể tìm thấy nơi các tập tin tiêu đề được phân tích cú pháp (bắt đầu từ dòng 1715 cho phiên bản 3.0.12):
s1 = cpp_include(fn, sysfile);
if (s1) {
/* ....... */
}
Bạn sẽ được quan tâm trong String *Swig_last_file(void)
chức năng, đó sẽ trở lại tên tệp của dòng tiêu đề vừa được phân tích cú pháp.
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);
}
Tôi biết đó không phải là giải pháp đầy đủ nhưng hy vọng có thể hướng dẫn bạn để có được hành vi mong muốn.
- 1. 'Ngoại trừ Tài nguyênT' so với 'Tài nguyênT Ngoại trừ'
- 2. SWIG: Báo cáo ngoại lệ Python từ mã C++
- 3. Graphics.DrawImage: Ngoại trừ bộ nhớ
- 4. Regex; loại trừ tất cả dấu chấm câu ngoại trừ
- 5. Công cụ xây dựng 21.1.2 - NGOẠI TRỪ LẠI NGOẠI TRỪ KHÔNG BAO GIỜ
- 6. Ghi ngoại lệ cụ thể bằng cách thử ... ngoại trừ
- 7. NGOẠI TRỪ TUYỆT VỜI NGOẠI HỐI: java.lang.IllegalArgumentException: đã thêm
- 8. linq Ngoại trừ và tùy chỉnh IEqualityComparer
- 9. pylint cảnh báo về 'trừ ngoại lệ:'
- 10. JQuery Chọn trường nhập ngoại trừ Ẩn
- 11. LINQ Ngoại trừ IEqualityComparer tùy chỉnh
- 12. lĩnh vực Ngoại trừ trong JAXB
- 13. Xác thực Apache ngoại trừ localhost
- 14. jQuery "chọn tất cả ngoại trừ"
- 15. Xóa thư mục ngoại trừ một
- 16. Nginx: Chuyển tất cả ngoại trừ một
- 17. Python 'ngoại trừ' mùa thu thông qua
- 18. SWIG treo Python
- 19. Có thể bắt tất cả ngoại lệ ngoại trừ thời gian chạy ngoại lệ không?
- 20. Có `thử ... ngoại trừ Ngoại lệ như e` nắm bắt mọi ngoại lệ có thể?
- 21. Sự khác biệt giữa StateT (Ngoại trừ e m) và Ngoại trừ e (StateT s m) là gì?
- 22. Node.JS Hợp nhất và Swig
- 23. Lỗi nhập SWIG và Python3
- 24. PyPy - SWIG - Kết hợp QuickFix
- 25. Tar: tạo lưu trữ loại trừ thư mục ngoại trừ một
- 26. Grep: Ngoại trừ một thư mục cụ thể sử dụng
- 27. Redirect subdomain vào miền chính ngoại trừ một url
- 28. Hash xóa tất cả ngoại trừ các phím cụ thể
- 29. xóa tất cả các biến ngoại trừ chức năng
- 30. truy vấn sqlite với giao nhau và ngoại trừ