Проблемы с одним файлом Makefile: C ++ - PullRequest
0 голосов
/ 22 марта 2012

В течение последнего часа я возился с make-файлом и, похоже, не могу его получить. Мне нужен make-файл, который скомпилирует main.cpp в / source / и поместит результат (e2.exe) в папку / build /. Вот что у меня сейчас:

build: source/main.cpp
    make -C build/ source/main.cpp

Понятия не имею, почему это не работает. Я пробовал так много вещей, как

build: source/main.cpp
    make -o build/ source/main.cpp

build: source/main.cpp
    make -C e2.exe source/main.cpp

build: source/main.cpp
    make -C source/main.cpp e2.exe

build: source/main.cpp
    make source/main.cpp -o e2.exe

И много других комбинаций. Вот моя структура папок:

root/
╚build/
 source/
  ╚main.cpp
 e2.pnproj
 e2.pnps
 Makefile

Причина всех попыток в том, что почти в каждом уроке, с которым я сталкиваюсь, есть сложные примеры и все в другом порядке.

Я думаю, что ближе всего к этому я подошёл:

build: source/main.cpp
    make -C build/ source/main.cpp

И ошибка:

make -C build/ source/main.cpp
make[1]: Entering directory `/c/WiiGames/e2/build'
make[1]: *** No rule to make target `source/main.cpp'.  Stop.
make[1]: Leaving directory `/c/WiiGames/e2/build'
"make": *** [build] Error 2

1 Ответ

3 голосов
/ 22 марта 2012

Во-первых, я замечаю, что вы make все понимаете. В какой-то момент вы должны cc (или gcc, или что-то еще) это. :)

Я думаю, вы могли бы просто сделать, как

build: source/main.cpp
        $(CXX) -o build/e2.exe source/main.cpp

где $(CXX) - имя / путь к вашему компилятору. (Обратите внимание, если вы копируете / заменяете, замените эти восемь пробелов знаком табуляции.)

...