Показаны сообщения с ярлыком tools. Показать все сообщения
Показаны сообщения с ярлыком tools. Показать все сообщения

2013-03-13

СЯУ, почему grep -- grep.

 В честь команды ed-а
 g/regular-expression/p.

2012-08-09

libtool, мать его.

2012 год на дворе.
Космические корабли бороздят ...
А факин libtool до сих пор не умеет готовить пути с пробелами.
Ненависть!

2012-07-02

Смайлики

цитато из Makefile

'^/\*' $< >$@

2012-06-27

записки из генераторной

python-скрипт читает конфиг в ini-файле и создает файл, включаемый в Makefile.am.
Тот после обработки automake дает Makefile, который при make создает из XML-файлов .cpp и .h (через qdbusxml2cpp).
полученный h-файл обрабатывается moc, давая еще один .cpp.
Потом все это компилируется...

2012-06-18

Небольшой опросец

Други мои, работающие в сфере IT.
А расскажите-ка, как у вас в конторах обстоит дело с паролями.
А то я недавно осознал, что у нас тут творится треш и содомия -- отдельные аккаунты (пароли) на:
1. Внутренний форум
2. Багтрекер
3. SVN-сервер
4. Внутренний Jabber
5. Сетевую шару.

Или так и должно быть/у всех так, и мне просто хочется странного?


2011-09-01

subversion 1.7

Пару недель назад поставил клиент 1.7.
При установке ругнулся -- "бла-бла-бла, я проапгрейджу вам рабочую копию.."
Ну проапгрейдишь так проапгрейдишь...

Сейчас смотрю -- что-то странное: во вложенном каталоге нету .svn
Он остался только в корне рабочей копии.
А все метаданные, что раньше хранились там -- теперь в sqlite базе.


2011-01-14

параллельная сборка в MSVC

При сборке проекта из-под 2005/2008 msvc, добавьте в Configuration Properties -> C/C++ -> Command Line-> Additional options строчку /MP.
Это аналог -j у make/boost.build.

ЗЫ. В 2010 вроде для этого есть параметр в гуе, но не проверял.
ЗЗЫ. Tools->Options->Projects and Solutions -> Build and Run -> maximum number of parallel project build задает кол-во параллельно собираемых проектов, но не количество параллельно компилируемых файлов.

2010-12-20

Автоматическое обновление svn:externals

В текущем проекте через svn:externals подключается 25 либ, причем не в единый корень, а в нескольких местах (в 5 или 6 местах).
Написал тут скрипт, который автоматически выставляет экстерналы на нужные ревизии.

2010-12-14

[boost.build][trick] Ускорение сборки в boost.build

boost.build всем хорош, кроме скорости.

К примеру, анализ того, какие файлы надо пересобрать, на моем проекте (30+ либ + boost) занимает 42 секунды.
Оказывается, решение было найдено полтора года назад.

http://lists.boost.org/boost-build/2009/04/21734.php

Человек переписал стандартный анализатор инклюдов так, чтоб тот игнорировал файлы по регекспу.
добавив "в игнор" стандартные хедеры (у них нет расширения) и хедеры буста (^boost/) - получил время анализа в 22 секунды.

Уже можно жить...

2010-06-25

Обрезалка ресурсов.

В VC2008sp1 и VC2010 в состав MFC входят новые классы для Ribbon-like UI.
Можно выбрать одну из пяти тем для приложения (aqua, blue, black, silver, windows7).
При статической компиляции внутрь экзешника попадают ресурсы всех тем.
Если в приложении есть переключение тем, это гуд.
А если Ваше приложение всегда должно быть одного цвета -- как то жалко тратить больше 700 KB на ресурсы, которые никогда не используются.
А если учесть то, что это PNG и они плохо жмутся пакерами...

Вот, набросал за часик на коленке питонячий скрипт, который это лечит.

import sys
from ctypes import *

w32 = windll.kernel32

def get_res_list(fname):
handle = w32.LoadLibraryW(fname)
if not handle:
return None

types = []

def types_callback(handle, t):
try:
types.append(cast(t, c_wchar_p).value)
except:
pass
return True

types_callback_t = CFUNCTYPE(c_void_p, c_wchar_p, c_long)
fun = types_callback_t(types_callback)
w32.EnumResourceTypesW(handle, fun, 0)

result = []

def names_callback(h, t, n):
try:
t = cast(t, c_wchar_p).value
n = cast(n, c_wchar_p).value
result.append((t,n))
except e:
print e
return True

names_callback_t = CFUNCTYPE(c_void_p, c_wchar_p, c_wchar_p, c_long)
fun = names_callback_t(names_callback)
for t in types:
w32.EnumResourceNamesW(handle, c_wchar_p(t), fun, 0)
w32.FreeLibrary(handle)
return result

NOT_USED = ('AQUA', 'SILVER', 'WINDOWS7', 'BLACK')
is_not_used = lambda x: x[1].split('_')[0] in NOT_USED

def remove_resources(fname, not_used):
handle = w32.BeginUpdateResourceW(fname, False)
if not handle:
return False
ok = True
try:
for t,n in not_used:
w32.UpdateResourceW(handle, t, n, 0x409, None, 0)
except e:
print e
ok = False
w32.EndUpdateResourceW(handle, not ok)
return ok


fname = u'd:\\app.exe'
not_used = filter(is_not_used, get_res_list(fname))
print remove_resources(fname, not_used)

2010-03-10

Переделал несколько либ под использование precompiled headers.
Скорость компиляции выросла в 2-3 раза.
Давно надо было это сделать.