2016-01-06 6 views
1

Большая часть моей команды использует файл .bat для установки путей, а затем запускает сборку. Базовый файл позволяет выбирать несколько разных компиляторов/целевых платформ, но все они используют некоторую версию GCC/G ++ или аналогичного компилятора.Ошибка «program not found» в Eclipse CDT

Я создал проект Eclipse, который просто использует файл .bat, вместо того, чтобы повторно изобретать колесо и отслеживать все пути, необходимые для каждой сборки (которые мне нужно будет обновлять, если кто-либо когда-либо обновлял .bat-файл в любом случае).

Это работает отлично подходит для строительства, и я даже могу видеть ошибки компилятора/предупреждение, но есть некоторые дополнительные ошибки всегда присутствуют:

Program "gcc" not found in PATH 
Program "g++" not found in PATH 

Я видел много вопросов по поводу этих и подобных ошибок, но в в том случае, если пользователь не смог построить, и было решение установить инструменты и/или обновить их настройки среды PATH или Eclipse. Я не хочу этого делать; все инструменты, которые мне нужны, установлены, и файл .bat отлично работает, чтобы установить PATH для построения. Есть ли способ подавить эти ошибки или Eclipse не пытается найти исполняемый файл компилятора, так как сборка в любом случае выполнена?


Редактировать: Как было предложено в ответе я получил до сих пор, здесь выводится на консоли после ввода полного пути к компилятору в глобальных параметрах обнаружения, которые не совсем мой любимый даже если бы это сработало, но я, вероятно, справимся с этим. Независимо от того, что ошибки не уходят:

15:27:24 **** Running scanner discovery: CDT GCC Built-in Compiler Settings MinGW **** 
"C:\\redacted\\localapps\\MinGW5\\bin\\g++.exe" -E -P -v -dD C:/Project_Files/redacted/code_workspaces/redacted/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C 
Reading specs from C:/redacted/localapps/MinGW5/bin/../lib/gcc/mingw32/3.4.2/specs 
Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug 
Thread model: win32 
gcc version 3.4.2 (mingw-special) 
C:/redacted/localapps/MinGW5/bin/../libexec/gcc/mingw32/3.4.2/cc1plus.exe -E -quiet -v -P -iprefix C:\redacted\localapps\MinGW5\bin\../lib/gcc/mingw32/3.4.2/ C:/Project_Files/redacted/code_workspaces/redacted/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C -dD 
ignoring nonexistent directory "C:/redacted/localapps/MinGW5/bin/../lib/gcc/mingw32/3.4.2/../../../../mingw32/include" 
#define __cplusplus 1 
ignoring nonexistent directory "/mingw/lib/gcc/mingw32/../../../include/c++/3.4.2" 
#define __STDC_HOSTED__ 1 
ignoring nonexistent directory "/mingw/lib/gcc/mingw32/../../../include/c++/3.4.2/mingw32" 
#define __GNUC__ 3 
ignoring nonexistent directory "/mingw/lib/gcc/mingw32/../../../include/c++/3.4.2/backward" 
... 

А потом куча #define сек

командной строки я в опциях обнаружения для этого вывода был C:\redacted\localapps\MinGW5\bin\${COMMAND}.exe ${FLAGS} -E -P -v -dD "${INPUTS}".

+0

Запускаете ли вы Eclipse CDT из файла bat или файл bat, используемый для сборки? Также вы можете уточнить, где вы видите ошибку? В консоли CDT Build (для каждого проекта или глобального), другой консоли или где-то еще? –

+0

Я использую файл .bat в конфигурации сборки в Eclipse, я не запускаю Eclipse из .bat-файла. Эти ошибки появляются в представлении проблем в Eclipse, а не в консоли сборки. – Ben

+0

Я угадал вашу проблему на основе предоставленной информации. Если мой ответ неверен, укажите подробные сведения из представления «Проблема», а также версию CDT/Eclipse, которую вы используете, поскольку качество сообщений об ошибках может быть лучше в более поздних версиях. –

ответ

2

На основании предоставленной информации эти ошибки исходят от части обнаружения сканера CDT.

На моей машине полная ошибка выглядит следующим образом:

Description        Location                      Type 
Program "g++" not found in PATH   Preferences, C++/Build/Settings/Discovery, [CDT GCC Built-in Compiler Settings MinGW] options C/C++ Scanner Discovery Problem 
Program "gcc" not found in PATH   Preferences, C++/Build/Settings/Discovery, [CDT GCC Built-in Compiler Settings MinGW] options C/C++ Scanner Discovery Problem 

Или как скриншот

problems view

Что происходит здесь Eclipse CDT является (попытка) запуска GCC и G ++, чтобы узнать, что глобально настройки для таких вещей, как включить пути и т. Д.

Чтобы устранить проблему, перейдите в местоположение, указанное в сообщении об ошибке, и настройте параметры сканера. Вот настройка соответствия, чтобы перейти со специальной ошибкой, которую я получил.

enter image description here

Ваша ошибка может быть в проекте или в глобальных настройках.

Чтобы обновить параметр MinGW, вы можете указать путь к пакетному файлу, который выглядит как GCC/G ++, но сначала настроит вашу среду, или вы можете указать прямо на GCC, что Eclipse CDT не нашел самостоятельно ,

Например, вы можете иметь:

D:\path\to\my\compilers\${COMMAND}.exe ${FLAGS} -E -P -v -dD "${INPUTS}" 

В качестве параметра вместо значения по умолчанию.

Чтобы помочь отладке, отметьте консоль выделения в окне консоли, чтобы увидеть, что именно выполняется и какой результат создается.

И вот что вы можете видеть, когда оно не работает. Надеемся, что сообщения об ошибках на консоли достаточны для решения проблемы на вашем компьютере.

21:12:54 **** Running scanner discovery: CDT GCC Built-in Compiler Settings MinGW **** 
"D:\\path\\to\\my\\compilers\\g++.exe" -E -P -v -dD C:/Temp/workspace/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C 
Cannot run program "D:\path\to\my\compilers\g++.exe": Launching failed 

Error: Program "D:\path\to\my\compilers\g++.exe" not found in PATH 
PATH=[\bin;\bin; -- snip --] 

21:12:54 Build Finished (took 37ms) 

Вот скриншот, чтобы соответствовать:

enter image description here

Если он работает, то вы должны увидеть много #define с и т.п., показывающий глобальное состояние вашего компилятора.

+0

Я думаю, вы правы; по крайней мере, вы догадались на полное сообщение об ошибке, которое я получаю. Но я не могу понять, как исправить конфигурацию. Я попытался дать полный путь к gcc.exe, используемому по умолчанию, вместо «$ COMMAND» в моей глобальной конфигурации для настроек компилятора MinGW (показано на втором снимке экрана), но ошибки остались. Обратите внимание, что у меня нет вкладки Discovery в настройках проекта, только в глобальных настройках, хотя ярлык в верхней части страницы настроек утверждает, что они каким-то образом могут быть переопределены параметрами проекта. – Ben

+0

Необходимо ввести пользовательскую команду вместо '$ {COMMAND}'. Попробуйте выделить консоль в виде консоли, чтобы увидеть, что именно выполняется. Например, с консолью и моим пользовательским пакетным файлом я вижу вывод: '20:54:28 **** Запуск обнаружения сканера: CDT GCC Встроенные настройки компилятора MinGW **** " c: \\ path \\ to \\ my.bat "-E -P -v -dD C: /Temp/workspace/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C ' –

+0

PS переопределение не решит ваша проблема, потому что, как только вы сообщите CDT, что используете MingGW, я думаю, что он попытается получить глобальные настройки (даже если они не будут их использовать), поэтому у вас будет сообщение об ошибке. –

Смежные вопросы