Помогите разобраться с nmake.

Тема в разделе "WASM.BEGINNERS", создана пользователем ajak, 27 июн 2009.

  1. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    В общем такая история. Решил почитать на досуге петцольда, программирование для вин 95. Подумал,может авось чтото новому и научусь. И прадва. На 20 странице автор предлагает использовать nmake которым я никогда не пользовался. В общем есть исходники на с на вин апи без проетка. Он предлагает пользоваться nmake чтобы собрать их. А у меня ничего не получается.
     
  2. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    http://slil.ru/27794667
    Вот исходники. В батнике регистрируются глобальные переменные среды выполнения. При запуске nmake пишет вот что.
    NMAKE : fatal error U1077: '.\cl.exe' : return code '0xc0000135'
    Что это? Не могу собрать исходник
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Во первых ещё в батник нужно добавить пути к Include и Lib папкам.
    SET INCLUDE=%INCLUDE%;далее через ";" перечисляем пути к Include папкам, в которых лежат необходимые заголовочные файлы.
    SET LIB=%LIB%;далее через ";" перечисляем пути к Lib папкам, в которых лежат необходимые библиотеки.

    Во вторых вызов nmake нужно добавить в сам батник, так как переменные окружения действуют только в сессии батника.
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Да и в PATH необходимо добавить путь где лежат компилятор и линковщик. У меня например так: PATH=%PATH%;D:\Coding\VC++\Microsoft Visual Studio .NET 2003\Vc7\bin
     
  5. Bazhan

    Bazhan Андрей

    Публикаций:
    0
    Регистрация:
    8 янв 2008
    Сообщения:
    71
    Адрес:
    Украина
    просто сделай еще один батник
    call "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" (здесь может быть другой путь)
    call E:\downloads\CHAP02\msc.bat (и тут тоже)
    call nmake hellowin.mak
     
  6. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    В общем прописал через консоль комманду set , указал include и указал путь до своих инков.
    ТЕперь получаю такую ошибку


    C:\_Program_\Microsoft Visual Studio 8\VC\bin>nmake hellowin.mak

    Microsoft (R) Program Maintenance Utility Version 8.00.50727.42
    Copyright (C) Microsoft Corporation. All rights reserved.

    -OUT:hellowin.exe hellowin.obj
    Синтаксическая ошибка в имени файла, имени папки или метке тома.
    NMAKE : fatal error U1077: '-OUT:hellowin.exe' : return code '0x1'
    Stop.

    Номер U1077
    Описание

    Visual C++ Concepts: Building a C/C++ Program
    NMAKE Fatal Error U1077
    Error Message
    'program' : return code 'value'


    The given command or program called by NMAKE failed and returned the given exit code.

    To suppress this error and continue the NMAKE session, use the /I option, the .IGNORE dot directive, or the dash (-) command modifier. To continue the NMAKE session for unrelated parts of the dependency tree, use the /K option
    Не пойм что от меня хотят, что петцольд в параметрах ошибся чтоль?
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    hellowin.obj собрался? И зачем ты собираешь в bin? Лучше path к нему укажи.
     
  8. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    ЭЭЭЭЭ..... изивини, я чёт ничего не понимаю. Просто нету опыта с этим делом.
    Что посоветуеш почитать по nmake. А то мне чёт не очень понятно.
    Где формат его файла, описание, как с ним работать

    Пока что собрался только объектик

    #------------------------
    # HELLOWIN.MAK make file
    #------------------------

    (*)hellowin.exe : hellowin.obj
    $(LINKER) $(GUIFLAGS) /OUT:hellowin.exe hellowin.obj $(GUILIBS)

    (*)hellowin.obj : hellowin.c
    $(CC) $(CFLAGS) hellowin.c
    Непонятны строки помеченные звёздочками мной. Они разве что то говорят nmake. И почему сначала указана первой линковка, если сначала нужно компилить и не линковать?
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Балин, но я же написал - "вставь вызов nmake в батник msc.bat!", в самый конец. nmake hellowin.mak. И установку переменных PATH, LIB, INCLUDE тоже в батник!.

    Читай в MSDN. Порядок не важен. Есть правила и они выполняются не зависимо от порядка строк. hellowin.obj : hellowin.c - Это строка(правило) говорит, что нужно получить на выходе hellowin.obj, и говорит что для этого нужен hellowin.c(зависимость). А как это правило реализовать - строкой ниже.
     
  10. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Ага понял. Только теперь вот такое

    Как в студии эту ошибку исправить я знаю. Нужно указать ручка проету гже либы лежать и добавить. А ут через консоль не знаю что дельше :dntknw: НУжно слинковать правильно
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    ajak
    Либы перечисляются в батнике:
    SET GUILIBS=-DEFAULTLIB:user32.lib gdi32.lib winmm.lib comdlg32.lib comctl32.lib
    Если пути к папкам либ указы верно, то они должны прилинковаться. Покажи полный вывод сообщений, предварительно удалив HELLOWIN.obj. Кстати, у тебя этот HELLOWIN.obj в папке bin случайно не остался?
     
  12. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Всё, спасибо, получилось, единственное не могу понять почему когда я запускаю батник и после того он сработал, захожу в новую консоль а там при выполнении set нету тех переменных окружений, которые я только установил, они как то быстроисчезают и существуют только в той консоли в которой создал. КАк их на постоянку забить.
     
  13. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Остался
     
  14. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Я уже писал, что переменные работают в сессии. Если в одной сессии установить переменные и выйти из неё, то естественно всё пропадёт. Также переменные наследуются дочерними сессиями. А чтобы было постоянно, установи в основной сессии - "Мой компьютер/Свойства/Дополнительно/Переменные окружения."
     
  15. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    класс, так и понял. Только не знал где эти переменные установить, теперь можно вздохнуть и продолжать читать петцольда