rubenvb
Legacy Member
Ik weet dat dit een tocht van lange adem is en zeker nooit zo goed gaat zijn als bvb CMake e.d.... maar ik ben zelf een C++ programma aan het schrijven dat in eerste instantie alle build steps zelf uitvoert (door de compiler en linker enzo op te roepen). Het is de bedoeling dat ie werkt met alle grote toolchains gcc/msvc/icc?) en een hele heldere en simpele en goede syntax krijgt.
Ik had graag jullie gedachten eens gehad over ... vanalles eigenlijk.
Syntax van de projectbestanden: ik hou van qmake (Qt4) en heb me daarop losjes gebaseerd. Een voorbeeld (zou libogg maken):
Zoals je misschien merkt heb ik C++ "scopes" proberen te combineren met qmake syntaxis. Ik denk dat die samen met nog wat (lees: veel) uitbreiding lekker gaat werken.
Later is het de bedoeling dat er dingen bijkomen als
zodat er op een vernuftige manier gecheckt wordt of deze libs/frameworks beschikbaar zijn als het build commando uitgevoerd wordt.
Nog een vraag: wat zou de beste manier zijn om te checken of een bestand veranderd is? Een of andere checksum gebruiken en dat in een temp bestandje allemaal bijhouden?
De reden hiervoor (dit alles) is dat ik cmake te stom vind, autotools is een hel waar niemand aan uit kan, en qmake een volledige installatie van Qt4 nodig heeft.
Kortom: een klein tooltje dat als tussenpersoon dient in het hele bouwproces, gebaseerd op interne kennis van verschillende toolchains en een simpel project bestand. Het is wss meer een academische bezigheid dat ik iets van C++ leer gebruiken, maar toch een nobel doel vind k
Ik had graag jullie gedachten eens gehad over ... vanalles eigenlijk.
Syntax van de projectbestanden: ik hou van qmake (Qt4) en heb me daarop losjes gebaseerd. Een voorbeeld (zou libogg maken):
Code:
# libogg CAKE project file
# "global" settings influence all targets in the file:
# - user variables are defined here
# - reserved keywords can be used, values stored in them will be available in all targets
global
{
SOURCE_DIRS src
HEADER_DIRS include
SOURCES bitwise.c framing.c
HEADERS ogg/os_types.h ogg/ogg.h
}
# static library
target ogg_static : lib
{
CONFIG static # make a static library
# output name $(STATICLIB_PREFIX)NAME$(DEBUG_SUFFIX)$(STATIC_SUFFIX)$(LIB_SUFFIX)
# for gcc libogg.a
# for msvc/icc ogg_static.lib or also ogg.dll.lib?
NAME ogg
}
# shared lib
target ogg_shared : lib
{
# create a shared library (dll on windows, .so for linux, same for mac?)
CONFIG shared
# output name $(SHAREDLIB_PREFIX_SHARED)NAME$(DEBUG_SUFFIX)$(SHAREDLIB_SUFFIX)
# with import library $(IMPLIB_PREFIX)NAME$(DEBUG_SUFFIX)$(IMPLIB_SUFFIX)
# for gcc ogg.dll + libogg.dll.a
# for msvc ogg.dll + ogg.lib
NAME ogg
}
Later is het de bedoeling dat er dingen bijkomen als
Code:
USE Qt4 vorbis gsl
QT4_MOC bestandjeomtemokken.cpp # of dit geheel automatisch laten verlopen...
Nog een vraag: wat zou de beste manier zijn om te checken of een bestand veranderd is? Een of andere checksum gebruiken en dat in een temp bestandje allemaal bijhouden?
De reden hiervoor (dit alles) is dat ik cmake te stom vind, autotools is een hel waar niemand aan uit kan, en qmake een volledige installatie van Qt4 nodig heeft.
Kortom: een klein tooltje dat als tussenpersoon dient in het hele bouwproces, gebaseerd op interne kennis van verschillende toolchains en een simpel project bestand. Het is wss meer een academische bezigheid dat ik iets van C++ leer gebruiken, maar toch een nobel doel vind k
