Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> <projectname>.bat, или весь проект в одном файле 
:(
    Опции темы
Abyx
Дата 31.7.2010, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



Иногда надо разместить на форуме небольшую программу, так чтобы другие участники могли ее скомпилировать и запустить.
Для этого обычно либо выкладывается только код, и предполагается что желающие сами создадут проект и добавят туда этот код,
либо прикрепляется архив с проектом (а также часто с кучей мусора типа .suo, .user, etc файлов).

Но есть другой способ: исходник можно объединить со скриптом компиляции, в одном .bat файле.

Пример для MSVC2010 (используется %VS100COMNTOOLS%)
Код

/* & @echo off & cls & rem !!! IT MUST BE FIRST LINE OF FILE !!!
set filename=ShowHTMLDialog
call "%VS100COMNTOOLS%vsvars32.bat"
copy %0 "%filename%.cpp
cl /Fe"%filename%.exe" %filename%.cpp kernel32.lib oleaut32.lib /link /SUBSYSTEM:WINDOWS
del %filename%.cpp
if not exist %filename%.exe goto :eof
del %filename%.obj
set /p ans=Run %filename%.exe? [y/n]^>
if "%ans%" == "y" start %filename%.exe
goto :eof
*/

// далее идет какой-то код....

#include <mshtmhst.h>
#pragma comment(lib, "urlmon.lib")

#pragma comment(linker, "/entry:main")
void main()
{
    static auto pfnShowHTMLDialog = (SHOWHTMLDIALOGFN*)GetProcAddress(LoadLibraryA("MSHTML.DLL"), "ShowHTMLDialog");
    IMoniker *pURLMoniker;
    auto bstrURL = SysAllocString(L"http://ya.ru");
    CreateURLMonikerEx(nullptr, bstrURL, &pURLMoniker, URL_MK_UNIFORM);
    if(pURLMoniker)
    {
        pfnShowHTMLDialog(nullptr, pURLMoniker, nullptr, L"help:no", nullptr);
        pURLMoniker->Release();
    }
    SysFreeString(bstrURL);
    ExitProcess(0); // kills threads created by MSHTML.DLL and ShowHTMLDialog()
}

PM MAIL   Вверх
djamshud
Дата 31.7.2010, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Это такая гениальная система сборки? Все давно уже изобретено: make, cmake, scons, etc.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Abyx
Дата 31.7.2010, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



djamshud, это "система сборки" которая позволяет запихнуть все в 1 файл.
Собственно это ее основное преимущество - минимум телодвижений, чтобы скачать, собрать и запустить программу.
Предложите способ быстрее.

PM MAIL   Вверх
djamshud
Дата 31.7.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Код

tar -xzf prog.tgz && cd prog && make

Разархивируем, переходим в каталог с исходниками, собираем.

Я в bat-скриптах полный ноль, но, как я понимаю, вашу "систему сборки" придется переписывать под каждый проект, правильно? А если в проекте несколько файлов? Про подкаталоги молчу:). И вообще в чем смысл создания каких-то там проектов для компиляции одного несчастного файла с исходником?

Нет, может быть это кому-нибудь и нужно, но лично мне идея кажется как минимум сомнительной, хотя, если честно, бредовой. Но на то оно и имхо:).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Abyx
Дата 31.7.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



djamshud, у меня винды, в них не работает
Код

tar -xzf prog.tgz && cd prog && make

что делать?

Цитата(djamshud @  31.7.2010,  16:40 Найти цитируемый пост)
вашу "систему сборки" придется переписывать под каждый проект, правильно? А если в проекте несколько файлов?

она рассчитана только на 1 файл. который можно запихнуть в тег [ code]
менять ничего не надо, разве что переменную filename

Цитата(djamshud @  31.7.2010,  16:40 Найти цитируемый пост)
И вообще в чем смысл создания каких-то там проектов для компиляции одного несчастного файла с исходником?

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

идея объединять .bat и сорцы не моя, я такое часто видел для масма
PM MAIL   Вверх
djamshud
Дата 31.7.2010, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Abyx, у меня линупс, ваш bat-скрипт тоже не работает:). Для винды мою строчку легко переделать, а например CMake можно настроить на компиляцию программы в различных операционках.

ЗЫ. А что, кто-то копирует с форума исходники и ради интереса их компилирует?..


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Abyx
Дата 31.7.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



djamshud, у меня нет CMake. Есть только nmake, bjam и msbuild.
PM MAIL   Вверх
djamshud
Дата 31.7.2010, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Abyx, а у другого нет винды, у третьего вижуалстудиевского компилятора. О чем разговор то тогда? Сделали велосипед, чтобы копипастить на форумы исходники и самому же их компилировать? Ну... молодец, пирожок на полке слева.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
boostcoder
Дата 31.7.2010, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Abyx @  31.7.2010,  14:17 Найти цитируемый пост)
(SHOWHTMLDIALOGFN*)GetProcAddress(LoadLibraryA("MSHTML.DLL"), "ShowHTMLDialog");

на чем код написан? функции странные. что за либа?
PM WWW   Вверх
Abyx
Дата 1.8.2010, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



PM MAIL   Вверх
boostcoder
Дата 2.8.2010, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Abyx @ 1.8.2010,  08:54)
boostcoderhttp://msdn.microsoft.com/en-us/library/aa...28VS.85%29.aspx

ааа, это же вендоус.
PM WWW   Вверх
HellStranger
Дата 4.8.2010, 14:05 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 1.9.2009

Репутация: -2
Всего: -1




Модератор: Сообщение скрыто.

PM MAIL   Вверх
boostcoder
Дата 4.8.2010, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



а по поводу "смысла" поста: что тут ненормального? поинтересовался что человек использует за либу, с такими функциями. что удивительного?

Это сообщение отредактировал(а) boostcoder - 4.8.2010, 18:13
PM WWW   Вверх
bsa
Дата 4.8.2010, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(boostcoder @  4.8.2010,  15:25 Найти цитируемый пост)
что удивительного?

Просто человек, который хоть раз видел WinAPI, сразу поймет, что это WinAPI.  smile 
PM   Вверх
boostcoder
Дата 4.8.2010, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(bsa @  4.8.2010,  14:32 Найти цитируемый пост)
Просто человек, который хоть раз видел WinAPI, сразу поймет, что это WinAPI.

ну и? ну не видел я винапи, и что?

Это сообщение отредактировал(а) boostcoder - 4.8.2010, 14:39
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0880 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.