5

コンパイラとしてCygwinGCC3でEclipseCDTを使用しています。私のプロジェクトはカスタムMakefileを使用しています。

問題は、コードをデバッグするときに、次のカスタムパスマッピングを追加したにもかかわらず、ソースファイルを見つけることができなかったことです。/cygdrive/c <-> c:\

これは、プログラムが正常にコンパイルおよび実行されているにもかかわらず、すべての標準ヘッダーファイルに対して「未解決のインクルード」が発生しているという事実に加えてです。

問題を「自動検出」オプションにトレースしました。これにより、次のエラーが表示されます。

スクリーンショット1

ワークスペースディレクトリがスペースのないパス上にあることを確認したことに注意してください。奇妙なことに、シェルで問題のあるコマンドを実行すると、次の出力で問題なく実行されます。

$ gcc -E -P -v -dD C:/Users/Amro/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /managed/gcc-build/final-v3-bootstrap/gcc-3.4.4-999/configure --verbose --program-suffix=-3 --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext --enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-threads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptions --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
 /usr/lib/gcc/i686-pc-cygwin/3.4.4/cc1.exe -E -quiet -v -P -D__CYGWIN32__ -D__CYGWIN__ -Dunix -D__unix__ -D__unix -idirafter /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api -idirafter /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/lib/../../include/w32api C:/Users/Amro/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c -mtune=pentiumpro -dD
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/include"
ignoring duplicate directory "/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/lib/../../include/w32api"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i686-pc-cygwin/3.4.4/include
 /usr/include
 /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api
End of search list.
#define __STDC_HOSTED__ 1
#define __GNUC__ 3
       [.... truncated ....]
#define __unix__ 1
#define __unix 1

また、インクルードパスに手動で追加しようとしました。

スクリーンショット2

インクルードパスと定義されたシンボルの両方を検出するようにこれを修正するにはどうすればよいですか?自動検出をオフにして、.cprojectファイルに必要なパスをハードコーディングする必要がありますか?どんな助けでもありがたいです(Cygwinの代わりにMinGWを使用することを提案しないでください!)

4

1 に答える 1

6

Yoursは、eclipseとcygwinの混合に関する苦情のfrequestソースです。問題の核心は、EclipseがWindows環境とcygwinのみを理解し、それほど多くは理解しないことです。

Eclipseウィンドウスタイルでパスを定義します。また、/ usrはC:\ cygwinの下にあるため、フルパスを指定する必要があります。それ以外の場合、Eclipseはc:\ usrの下でそれを見つけようとし、空になります。

また、パス定義はWindows環境に追加または置き換えられていますか?おそらく、置き換えるよりも、環境に追加する方が幸せでしょう。

自動検出を試したことはありません-.cprojectでこれらのパスをハードコーディングする必要がある場合があります

于 2009-10-05T05:32:47.497 に答える