Почему g ++ не скомпилирует простую программу GTK?

Я начинаю учить себя немного C ++ в эти выходные, и я решил изучить некоторое программирование GUI тем временем. Дело в том, что он просто не будет компилироваться, либо с использованием GTK (комплектация Windows 3.6.4) или wxWidgets (3.0.0). Ошибка, которую я получаю, одинакова для обоих, поэтому я придерживаюсь GTK + для этого вопроса.

Через 5 дней (7 перекомпиляций wx, много уроков, ТАК вопросы и гугл), вот как я пытаюсь скомпилировать код (Я нахожусь под Windows 7, 64 бита, и сейчас нет возможности переключиться на Linux):

@echo off

set cygpath=C:\Cygwin\bin
set filename=simple

%cygpath%\bash.exe -c "gcc $(pkg-config --cflags gtk+-3.0) -o %filename% %filename%.c $(pkg-config --libs gtk+-3.0)"
echo.
pause

Но единственный вывод, который я получаю, это (обратные ходы вместо $() возвращает тоже самое)

: Invalid argument
: Invalid argument

Сначала я попробовал то же самое без Cygwin, но результаты были:

gcc: error: $(pkg-config: No such file or directory
gcc: error: gtk+-3.0): No such file or directory
gcc: error: $(pkg-config: No such file or directory
gcc: error: gtk+-3.0): No such file or directory
gcc: error: unrecognized command line option '--cflags'
gcc: error: unrecognized command line option '--libs'

Использование кавычек или двойных кавычек не помогло вообще. Я пробовал все это как в cygwin-bash, так и в приглашении Windwos

Я совершенно новичок в C ++, wxWidgets и GTK +, и я уже видел этот, но поскольку это не решило мою проблему, и я не могу комментировать из-за своей репутации, я подумал, что должен открыть новый вопрос.

Также я изменил компилятор на TDM-GCC потому что я не мог скомпилировать wx с MinGW. Это как-то связано? Что мне здесь не хватает?

Заранее благодарю за любую помощь.

РЕДАКТИРОВАТЬИзвините, только что понял, что образец написан на C, а не на C ++. Я добавляю тег сейчас. (Однако ошибка та же, что и в коде C ++, который я использую для wx, поэтому я сохраняю тег C ++.)

0

Решение

Это НЕ проблема GCC. Это проблема сценариев / shell / bash / environment.

gcc: error: $(pkg-config: No such file or directory

Эта строка обозначает, что «GCC» увидел $(pkg-config где ожидалось имя файла; Приложения Linux ожидают, что подстановка командной строки будет выполнена для них оболочкой, вызывающей их.

Это означает, что оболочка не потребляет $(pkg-config --cflags gtk+-3.0) и выполнить замену на нем.

Возможно, вы захотите попробовать создать bash-скрипт gtkcc.sh, который сделает это за вас и вставит соответствующие параметры в соответствующие места.

#!/bin/bash

# usage: gtkcc.sh <filename>
filename="$1"; shift
if [ -z "${filename}" ]; then echo "Usage: $0 <filename>"; exit 255; fi
if [ ! -f "${filename}.c" ]; then echo "Cannot find ${filename}.c"; exit 255; fi

gtkCFLAGS="$(pkg-config --cflags gtk+-3.0)"gtkLDFLAGS="$(pkg-config --libs gtk+-3.0)"
cmd="gcc ${gtkCFLAGS} -o \"${filename}\" \"${filename}.c\" ${gtkLDFLAGS}"echo $cmd >${TMP}/gtkcc.log
eval $cmd

Сохранить как gtkcc.sh или gtkcc, chmod a+rx gtkcc.sh

Измените свой файл bat, чтобы вызвать:

%cygpath%\bash.exe gtkcc.sh %filename%

Если это не работает, запустите bash и обратитесь к $ {TMP} /gtkcc.log, в противном случае вы можете закомментировать строку эха.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]