Аргументы команды в конфигурациях компилятора - PullRequest
1 голос
/ 26 февраля 2010

[править] Я хотел сказать "аргументы команды в конфигурациях компилятора". за заголовок.

Я пытаюсь войти в игровые моды. И я пытаюсь реализовать исходный SDK. Один из шагов - перейти к отладке в конфигурации моего компилятора и добавить некоторые данные в аргументы команды

-dev -sw -game "C:\Program Files (x86)\Steam\steamapps\SourceMods\firstmod"

Теперь я знаю, что такое аргументы команды. Они передаются через параметры WinMain и, судя по названию в настройках компилятора. Я предполагаю, что это как-то связано с этим. а может и нет. Я просто не уверен, будет ли выше рассмотрено 1 аргумент или несколько аргументов. и что он пытается достичь, передав каталог через. Они не были слишком детализированы с информацией.

Ответы [ 2 ]

1 голос
/ 26 февраля 2010

Ваш пример имеет четыре аргумента:

  1. -dev
  2. -sw
  3. -game
  4. C:\Program Files (x86)\Steam\steamapps\SourceMods\firstmod

Поскольку последний аргумент заключен в кавычки, анализатор командной строки Windows будет считать его единственным аргументом.

Что касается того, чего он пытается достичь, передавая каталог, невозможно знать наверняка, не видя, что делает код. Но одно предположение состоит в том, что сборка будет генерировать несколько взаимосвязанных файлов, которые все должны находиться в одном каталоге; поэтому вы указываете каталог, и все файлы будут созданы там.

1 голос
/ 26 февраля 2010

В обычном (читаемом консоли) приложении C / C ++ у вас будет точка входа в программу со следующим объявлением:

int main( int argc, char* argv[] );

Здесь argc - это количество «строк» ​​командной строки, включая саму команду, а argv - массив этих строк. Таким образом, в вашем примере это будет argc из 5 (с добавлением имени программы), а argv[0] - это название программы, argv[1] - это "-dev" и т. Д.

Теперь под Windows приложение с графическим интерфейсом отличается - точка входа объявлена ​​как:

int WINAPI WinMain(      
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
);

Таким образом, вся командная строка (на этот раз за исключением имени приложения) указана lpCmdLine, так что это будет одна строка, как вы указали выше. Хотя есть вспомогательные функции для разделения этой строки. Взгляните на эти две записи в MSDN:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...