Thanks everyone. I appreciate all the replies greatly. I don't understand why this wouldn't be in the FAQ, when questions like "What is Harbour?" are in there. I am skeptical that that question is actually a "Frequently asked question". I will keep a journal of my attempts to get Harbour working properly by piecing it together with everyones help and my own effort.., and at the end, suggest a few important yet pertinent questions for the FAQ.
Looking forward to Harbour! On Wed, Jan 20, 2010 at 11:08 PM, Massimo Belgrano <[email protected]>wrote: > Using hbmk2 > > > hbmk2 is a Tool that allow compile sample and large project > basic use of this tools is > hbmk2 ac_test > hbmk2 ac_test.prg > After this command you have ac_test.exe created > You can also immediaply execute simple using > hbmk2 ac_test -run > > Hbmk2 is indipendent from Platform and Compiler that you use > > Please also try the recommended way with hbmk2, it does > a similar job to your manual Makefile, but it's portable, works > for all future test programs and just one line. > > If hbmk2 doesn't work for you for some reason, post your -trace output > > How compile several. PRG & lib? > > hbmk2 test1 test2 testn -lmylib1 -lmylib2 -lmylibn > hbmk2 test1.prg test2.prg testn.prg mylib1.lib mylib2.lib mylibn.lib > > How create a lib? > > hbmk2 myprg1.PRG myprg2.prg myrc.rc -b -m -hblib -omiolib.lib > > How have additional information? > > hbmk2 test1 test2 testn -lmylib1 -lmylib2 -lmylibn > hbmk2 ac_test -info -trace > > How disample compile incremental? > > hbmk2 test1 test2 testn -lmylib1 -lmylib2 -lmylibn -rebuild > default os enable incremental build mode , so only modified part of > your project will be recompiled > -rebuild flag allow > How use a config library file (hbc)? > > hbc contain the library used from the project > typically exist a template for each library for include all neccessary > references > se for eaxample > /harbour/contrib/hbxbp/hbxbp.hbc > Yoy can use use hbc adding to hbmk2 command line > use inside a hpb adding a line with path where hbc reside > > > # > # $Id: hbxbp.hbc 11447 2009-06-20 02:41:38Z vszakats $ > # > > incpaths=. > > libs=hbxbp > libs=../hbqt/hbqt.hbc > How used a Project file (hbp)? > > you can simply use > hbmk2 hbide.hbp > hbp contain all command contained in command line > # > # $Id: hbide.hbp 13463 2010-01-04 10:15:18Z vouchcac $ > # > > ../hbxbp/hbxbp.hbc > > -inc > > -w3 -es2 -gc3 > > -ohbide > > # Trick to make it link using default Harbour builds > -ldflag={msvc}-nodefaultlib:msvcrt.lib > -ldflag={msvc}-defaultlib:libcmt.lib > > hbide.prg > ideobject.prg > idestylesheets.prg > idetags.prg > idemisc.prg > ideactions.prg > ideeditor.prg > idefindreplace.prg > idedocks.prg > idesaveload.prg > iderequests.prg > idethemes.prg > ideprojmanager.prg > > ideparseexpr.c > > What is hb.mk? > > Is a default setting applied to all source compiled in this directory > How obain help? > > hbmk2 - help > > Harbour Make (hbmk2) 2.0.1dev (Rev. 13476) > Copyright (c) 1999-2010, Viktor Szakats > http://www.harbour-project.org/ > Translation (it-IT): (add your name here) > > Syntax: > > hbmk2 [options] [<script[s]>] > <src[s][.prg|.c|.obj|.o|.rc|.res|.po|.pot|.hbl|@.clp|.d]> > > Options: > -o<outname> output file name > -l<libname> link with <libname> library. <libname> should be > without > path, extension and 'lib' prefix (unless part of > libname). > -L<libpath> additional path to search for libraries > -i<p>|-incpath=<p> additional path to search for headers > -static|-shared link with static/shared libs > -mt|-st link with multi/single-thread VM > -gt<name> link with GT<name> GT driver, can be repeated to link > with > more GTs. First one will be the default at runtime > -hblib create static library > -hbdyn create dynamic library > > -gui|-std create GUI/console executable > -main=<mainfunc> override the name of starting function/procedure > -fullstatic link with all static libs > -[full|fix]shared create shared Harbour binaries without/with absolute > dir > reference to Harbour library (default: 'fullshared' > when > Harbour is installed on system location, 'fixshared' > otherwise) (fix/full option in *nix only) > -nulrdd[-] link with nulrdd > -[no]debug add/exclude C compiler debug info. For Harbour level > debug, use Harbour option -b as usual > -[no]optim toggle C compiler optimizations (default: on) > -[no]cpp[=def] force C/C++ mode or reset to default > -[no]map create (or not) a map file > -[no]implib create (or not) an import library (in -hbdyn mode) > -[no]strip strip (no strip) binaries > -[no]trace show commands executed > -[no]beep enable (or disable) single beep on successful exit, > double > beep on failure > -[no]ignore ignore errors when running compiler tools (default: > off) > -nohblib[-] do not use static core Harbour libraries when linking > -nolibgrouping[-] disable library grouping on gcc based compilers > -nomiscsyslib[-] don't add extra list of system libraries to default > library list > -traceonly show commands to be executed, but don't execute them > -[no]warn[=lev] set C compiler warning level > <lev> can be: yes, no, def (default: yes) > -[no]compr[=lev] compress executable/dynamic lib (needs UPX) > <lev> can be: min, max, def > -[no]run run/don't run output executable > -vcshead=<file> generate .ch header file with local repository > information. SVN, CVS, Git, Mercurial, Bazaar and > Fossil > are currently supported. Generated header will define > macro _HBMK_VCS_TYPE_ with the name of detected VCS and > _HBMK_VCS_ID_ with the unique ID of local repository > -tshead=<file> generate .ch header file with timestamp information. > Generated header will define macros _HBMK_BUILD_DATE_, > _HBMK_BUILD_TIME_, _HBMK_BUILD_TIMESTAMP_ with the > date/time of build > -icon=<file> set <file> as application icon. <file> should be a > supported format on the target platform (experimental) > -instpath=<path> copy target to <path>. if <path> is a directory, it > should > end with path separator. can be specified multiple > times > -nohbc do not process .hbc files in current directory > -stop stop without doing anything > -echo=<text> echo text on screen > > -bldf[-] inherit all/no (default) flags from Harbour build > -bldf=[p][c][l] inherit .prg/.c/linker flags (or none) from Harbour > build > -inctrypath=<p> additional path to autodetect .c header locations > -prgflag=<f> pass flag to Harbour > -cflag=<f> pass flag to C compiler > -resflag=<f> pass flag to resource compiler (Windows only) > -ldflag=<f> pass flag to linker (executable) > -aflag=<f> pass flag to linker (static library) > -dflag=<f> pass flag to linker (dynamic library) > -runflag=<f> pass flag to output executable when -run option is used > -jobs=<n> start n compilation threads (multiprocess platforms > only) > -inc enable incremental build mode > -[no]head[=<m>] control source header parsing (in incremental build > mode) > <m> can be: native, full, partial (default), off > -rebuild rebuild all (in incremental build mode) > -clean clean (in incremental build mode) > -workdir=<dir> working directory for incremental build mode > (default: .hbmk/plat/comp) > > -hbl[=<output>] output .hbl filename. %{hb_lng} macro is accepted in > filename > -lng=<languages> list of languages to be replaced in %{hb_lng} macros in > .pot/.po filenames and output .hbl/.po filenames. Comma > separared list: > -lng=en-EN,hu-HU,de > -po=<output> create/update .po file from source. Merge it with > previous > .po file of the same name > -[no]minipo don't (or do) add Harbour version number and source > file > reference to .po (default: add them) > -rebuildpo recreate .po file, thus removing all obsolete entries > in > it > > -target=<script> specify a new build target. <script> can be .prg (or no > extension) or .hbm file (available on command line > only) > -target marks beginning of options belonging to a new build > target > (available on command line only) > -alltarget marks beginning of common options belonging to all > targets > (available on command line only) > > -hbrun run target > -hbraw stop after running Harbour compiler > -hbcmp|-clipper stop after creating the object files > create link/copy hbmk2 to hbcmp/clipper for the same > effect > -hbcc stop after creating the object files and accept raw C > flags > create link/copy hbmk2 to hbcc for the same effect > -hblnk accept raw linker flags > -hb10 enable Harbour 1.0.x compatibility mode (experimental) > -xhb enable xhb mode (experimental) > -hbc enable pure C mode (experimental) > -exospace emulate Clipper compatible linker behavior > create link/copy hbmk2 to rtlink/blinker/exospace for > the > same effect > > -hbmake=<file> convert hbmake project file to .hbp file (experimental) > -xbp=<file> convert .xbp (xbuild) project file to .hbp file > (experimental) > -xhp=<file> convert .xhp (xMate) project file to .hbp file > (experimental) > > --hbdirbin output Harbour binary directory > --hbdirdyn output Harbour dynamic library directory > --hbdirlib output Harbour static library directory > --hbdirinc output Harbour header directory > > -plat[form]=<plat> select target platform. > -comp[iler]=<comp> select C compiler. > Special value: > - bld: use original build settings (default on *nix) > -build=<name> use a specific build name > -lang=<lang> override default language. Similar to HB_LANG envvar. > --version display version header only > -pause force waiting for a key on exit in case of failure > (with > alternate GTs only) > -info turn on informational messages > -quiet suppress all screen messages > > Notes: > - <script> can be <@script> (.hbm format), <script.hbm>, <script.hbp> > (marks > a new target) or <script.hbc>. > - Multiple -l, -L and <script> parameters are accepted. > - Regular Harbour compiler options are also accepted. > - hbmk.cfg option file in hbmk2 directory is always processed if it > exists. > On *nix platforms ~/.harbour, /etc/harbour, <base>/etc/harbour, > <base>/etc > are checked (in that order) before the hbmk2 directory. The file format > is > the same as .hbc. > - hbmk.hbm make script in current directory is always processed if it > exists. > - .hbc config files in current dir are automatically processed. > - .hbc options (they should come in separate lines): libs=[<libname[s]>], > hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[<libname[s]>], > prgflags=[Harbour flags], cflags=[C compiler flags], resflags=[resource > compiler flags], ldflags=[linker flags], libpaths=[paths], > sources=[source > files], incpaths=[paths], inctrypaths=[paths], instpaths=[paths], > gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no], > cpp=[yes|no|def], warn=[yes|no|def], compr=[yes|no|def|min|max], > head=[off|partial|full|native], skip=[yes|no], echo=<text> > Lines starting with '#' char are ignored > - Platform filters are accepted in each .hbc line and with several > options. > Filter format: {[!][<plat>|<comp>|<keyword>]}. Filters can be combined > using '&', '|' operators and grouped by parantheses. Ex.: {win}, {gcc}, > {linux|darwin}, {win&!pocc}, {(win|linux)&!watcom}, {unix&mt&gui}, > -cflag={win}-DMYDEF, -stop{dos}, -stop{!allwin}, > {allpocc|allgcc|allmingw|unix}, {allmsvc}, {x86|x86_64|ia64|arm}, > {debug|nodebug|gui|std|mt|st|xhb} > - Certain .hbc lines (libs=, hbcs=, prgflags=, cflags=, ldflags=, > libpaths=, > inctrypaths=, instpaths=, echo=) and corresponding command line > parameters > will accept macros: ${hb_root}, ${hb_dir}, ${hb_name}, ${hb_plat}, > ${hb_comp}, ${hb_build}, ${hb_cpu}, ${hb_bin}, ${hb_lib}, ${hb_dyn}, > ${hb_inc}, ${<envvar>}. libpaths= also accepts %{hb_name} which > translates > to the name of the .hbc file under search. > - Options accepting macros also support command substitution. Enclose > command > inside ``, and, if the command contains space, also enclose in double > quotes. F.e. "-cflag=`wx-config --cflags`", or > ldflags={unix&gcc}"`wx-config --libs`". > - Defaults and feature support vary by platform/compiler. > - Options can also be specified in environment variable HBMK_OPTIONS > > Supported <comp> values for each supported <plat> value: > - linux : gcc, clang, icc, watcom, sunpro, open64 > - darwin : gcc, clang, icc > - win : mingw, msvc, bcc, watcom, icc, pocc, cygwin, xcc, > - mingw64, msvc64, msvcia64, iccia64, pocc64 > - wce : mingwarm, mingw, msvcarm, poccarm > - os2 : gcc, gccomf, watcom > - dos : djgpp, watcom > - bsd : gcc > - hpux : gcc > - beos : gcc > - sunos : gcc, sunpro > > > > > 2010/1/21 smu johnson <[email protected]>: > > Hi. > > > > I have installed Harbour on my Windows 64 machine... but have absolutely > no > > clue how to use this. It just installed, and I have a tree with a bunch > of > > executables. > > > > If I wanted to write a hello world program (which I have done), what > steps > > must I take to actually be able to use Harbour as intended... ie, make a > > hello.exe file? > > > > I am surprised that nowhere in the FAQ is this question answered, or even > > addressed. I feel like I missed the school day when "how to generate, > > compile, link, and make .exe" discussions were held. > > > > I tried to experiment, and ran C:\>harbour hello.prg. Now I have a C > file > > generated... I don't understand in a harbour context what I'm susposed to > do > > with this. Obviously it won't compile without a few arguments to MinGW > or > > gcc. Since I couldn't find any hints or explanations, I tried > compiling > > it on my Linux machine as it has gcc setup easily, and it complains about > > missing headers, which I kind of guessed would happen. So, maybe the > most > > obvious question of all for the FAQ: "I installed Harbour. How do I > make > > an .exe from a helloworld.prg file?" or something to that effect. > > > > Am I simply missing a simple batch file that will just do all this > linking > > work for me, so that hello.prg turns into an .exe without any fuss or > > frustration? Could someone please kindly explain what I am missing? > Since > > old DOS apps like Turbo C or Pascal, or Microsoft Basic let you do this > > without the slightest thought, is this not already done with Harbour? > > > > Many thanks in advice! > > > > PS: I have seen that it can be made into an exe, as the screenshot > showing > > a Hello World working made it clear, yet the advice on "how to compile" > only > > lists Linux as a simple guide. *sad face* > > > > -- > > smu johnson <[email protected]> > > _______________________________________________ > > Harbour-users mailing list (attachment size limit: 40KB) > > [email protected] > > http://lists.harbour-project.org/mailman/listinfo/harbour-users > > > > > > -- > Massimo Belgrano > > Iscritto all'albo dei CTU presso il Tribunale di Novara per materia > Informatica > Delta Informatica S.r.l. (http://www.deltain.it/) (+39 0321 455962) > Analisi e sviluppo software per Lan e Web - Consulenza informatica - > Formazione > _______________________________________________ > Harbour-users mailing list (attachment size limit: 40KB) > [email protected] > http://lists.harbour-project.org/mailman/listinfo/harbour-users > -- smu johnson <[email protected]> _______________________________________________ Harbour-users mailing list (attachment size limit: 40KB) [email protected] http://lists.harbour-project.org/mailman/listinfo/harbour-users
