it-swarm.dev

معرفة ما تضمه دول مجلس التعاون الخليجي هو المسار

أحاول أن أجد برمجيًا مسار #include على نظام Linux ، وهو ما أفهمه ، يعني في الممارسة العملية العثور على ما يعتبره مجلس التعاون الخليجي. (هل هذا صحيح تمامًا؟ كيف يفعل كلانج ذلك؟)

وفقًا لـ http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html تتضمن بعض المكونات بنية وحدة المعالجة المركزية وإصدار GCC. هذا الأخير على وجه الخصوص يبدو صعبا. أفترض أنه يمكن الحصول عليها عن طريق تشغيل gcc --version وتحليل الناتج (أو gcc -v) ، لكن هذا يبدو غير مرغوب فيه في أحسن الأحوال وهشٍ في أسوأ الأحوال. قد يكون القيام بذلك من داخل رمز واحد بافتراض أن يتم تجميع برنامج واحد مع دول مجلس التعاون الخليجي خيارًا آخر ، لكنه يتطلب اعتمادًا على هذا الافتراض.

ما هي الطريقة الموصى بها للقيام بذلك؟

63
rwallace

الامر

echo | gcc -E -Wp,-v -

سوف تظهر المسار تشمل في الاستخدام.

127
caf

لست متأكدًا مما تعنيه بـ الموصى بها طريقة للعثور على مسار التضمين. المعيار الطريقة كما هو موضح أدناه (في c و c ++):

$ `gcc -print-prog-name=cc1` -v
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
 /usr/include
End of search list.
^C
$ `gcc -print-prog-name=cc1plus` -v
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/4.7
 /usr/include/c++/4.7/x86_64-linux-gnu
 /usr/include/c++/4.7/backward
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
 /usr/include
End of search list.
^C
17
devnull