Results 1 to 10 of 24

Thread: Class operators in Freepascal records like in Delphi 2010?

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Ok, now I'm having another issue...it is obviously because I am using a different version of FPC to compile my Lazarus projects now, but I am not sure what to do about it

    My Lazarus projects can't find standard units like IniFiles, Contnrs, etc. and I am unsure how to proceed.

    Here is a screenshot of my Lazarus Environmental (Files) options:



    And here is my fpc.cfg file (version 2.4.2, the 2.5.1 doesn't have one):
    Code:
    #
    # Config file generated by fpcmkcfg on 11/04/2011 - 22:24:39
    # Example fpc.cfg for Free Pascal Compiler
    #
    
    # ----------------------
    # Defines (preprocessor)
    # ----------------------
    
    #
    # nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed
    #
    # -d is the same as #DEFINE
    # -u is the same as #UNDEF
    #
    
    #
    # Some examples (for switches see below, and the -? helppages)
    #
    # Try compiling with the -dRELEASE or -dDEBUG on the commandline
    #
    
    # For a release compile with optimizes and strip debuginfo
    #IFDEF RELEASE
      -O2
      -Xs
      #WRITE Compiling Release Version
    #ENDIF
    
    # For a debug version compile with debuginfo and all codegeneration checks on
    #IFDEF DEBUG
      -glh
      -Crtoi
      #WRITE Compiling Debug Version
    #ENDIF
    
    # ----------------
    # Parsing switches
    # ----------------
    
    # Pascal language mode
    #      -Mfpc      free pascal dialect (default)
    #      -Mobjfpc   switch some Delphi 2 extensions on
    #      -Mdelphi   tries to be Delphi compatible
    #      -Mtp       tries to be TP/BP 7.0 compatible
    #      -Mgpc      tries to be gpc compatible
    #      -Mmacpas   tries to be compatible to the macintosh pascal dialects
    #
    # Turn on Object Pascal extensions by default
    #-Mobjfpc
    
    # Assembler reader mode
    #      -Rdefault  use default assembler
    #      -Ratt      read AT&T style assembler
    #      -Rintel    read Intel style assembler
    #
    # All assembler blocks are AT&T styled by default
    #-Ratt
    
    # Semantic checking
    #      -S2        same as -Mobjfpc
    #      -Sc        supports operators like C (*=,+=,/= and -=)
    #      -Sa        include assertion code.
    #      -Sd        same as -Mdelphi
    #      -Se<x>     compiler stops after the <x> errors (default is 1)
    #      -Sg        allow LABEL and GOTO
    #      -Sh        Use ansistrings
    #      -Si        support C++ styled INLINE
    #      -SI<x>     set interface style to <x>
    #         -SIcomCOM compatible interface (default)
    #         -SIcorbaCORBA compatible interface
    #      -Sm        support macros like C (global)
    #      -So        same as -Mtp
    #      -Sp        same as -Mgpc
    #      -Ss        constructor name must be init (destructor must be done)
    #      -St        allow static keyword in objects
    #
    # Allow goto, inline, C-operators, C-vars
    -Sgic
    
    # ---------------
    # Code generation
    # ---------------
    
    # Uncomment the next line if you always want static/dynamic units by default
    # (can be overruled with -CD, -CS at the commandline)
    #-CS
    #-CD
    
    # Set the default heapsize to 8Mb
    #-Ch8000000
    
    # Set default codegeneration checks (iocheck, overflow, range, stack)
    #-Ci
    #-Co
    #-Cr
    #-Ct
    
    # Optimizer switches for i386 compiler
    # -Os        generate smaller code
    # -O1        level 1 optimizations (quick optimizations)
    # -O2        level 2 optimizations (-O1 + slower optimizations)
    # -O3        level 3 optimizations (same as -O2u)
    # -Oa=N      set alignment to N
    # -OoX       switch on optimalization X. 
    # -OoNOX     switch off optimalization X.
    #               X is one of REGVAR UNCERTAIN STACKFRAME PEEPHOLE ASMCSE LOOPUNROLL
    # -OpCPU     set target processor.
    #             CPU is one of 386, PENTIUM, PENTIUM2, PENTIUM3, PENTIUM4, PENTIUMM 
    
    
    # -----------------------
    # Set Filenames and Paths
    # -----------------------
    
    # Both slashes and backslashes are allowed in paths
    
    # path to the messagefile, not necessary anymore but can be used to override
    # the default language
    #-Frc:\lazarus\fpc\2.4.2/msg/errore.msg
    #-Frc:\lazarus\fpc\2.4.2/msg/errorn.msg
    #-Frc:\lazarus\fpc\2.4.2/msg/errores.msg
    #-Frc:\lazarus\fpc\2.4.2/msg/errord.msg
    #-Frc:\lazarus\fpc\2.4.2/msg/errorr.msg
    
    # path to the gcclib
    #-Flc:\lazarus\fpc\2.4.2/lib
    
    #IFDEF FPCAPACHE_1_13
    -Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/httpd13/
    #ELSE
    #IFDEF FPCAPACHE_2_0
    -Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/httpd20
    #ELSE
    -Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/httpd22
    #ENDIF
    #ENDIF
    
    # searchpath for units and other system dependent things
    -Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/
    -Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/*
    -Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/rtl
    
    # searchpath for libraries
    #-Flc:\lazarus\fpc\2.4.2/lib
    #-Fl/lib;/usr/lib
    
    # searchpath for tools
    -FDc:\lazarus\fpc\2.4.2/bin/$FPCTARGET
    
    # binutils prefix for cross compiling
    #IFDEF FPC_CROSSCOMPILING
      -XP$FPCTARGET-
    #ENDIF
    
    
    # -------------
    # Linking
    # -------------
    
    # generate always debugging information for GDB (slows down the compiling
    # process)
    #      -gc        generate checks for pointers
    #      -gd        use dbx
    #      -gg        use gsym
    #      -gh        use heap trace unit (for memory leak debugging)
    #      -gl        use line info unit to show more info for backtraces
    #      -gv        generates programs tracable with valgrind
    #      -gw        generate dwarf debugging info
    #
    # Enable debuginfo and use the line info unit by default
    #-gl
    
    # always pass an option to the linker
    #-k-s
    
    # Always strip debuginfo from the executable
    -Xs
    
    
    # -------------
    # Miscellaneous
    # -------------
    
    # Write always a nice FPC logo ;)
    -l
    
    # Verbosity
    #      e : Show errors (default)       d : Show debug info
    #      w : Show warnings               u : Show unit info
    #      n : Show notes                  t : Show tried/used files
    #      h : Show hints                  m : Show defined macros
    #      i : Show general info           p : Show compiled procedures
    #      l : Show linenumbers            c : Show conditionals
    #      a : Show everything             0 : Show nothing (except errors)
    #      b : Show all procedure          r : Rhide/GCC compatibility mode
    #          declarations if an error    x : Executable info (Win32 only)
    #          occurs
    #
    # Display Info, Warnings, Notes and Hints
    -viwn
    # If you don't want so much verbosity use
    #-vw
    Any ideas?

    cheers,
    Paul

  2. #2
    Replace all mentions you can find of 2.4.2 with 2.5.1, and you should be good again

    Units compiled with a different version of the compiler cannot be used by the same compiler. It might be a very different PPU structure. Hence, you will also have to recompile lazarus when you've inserted the new FPC version info
    Peregrinus, expectavi pedes meos in cymbalis
    Nullus norvegicorum sole urinat

  3. #3
    Quote Originally Posted by JSoftware View Post
    Replace all mentions you can find of 2.4.2 with 2.5.1, and you should be good again

    Units compiled with a different version of the compiler cannot be used by the same compiler. It might be a very different PPU structure. Hence, you will also have to recompile lazarus when you've inserted the new FPC version info
    When you say replace 2.4.2 with 2.5.1 do you mean in the fpc.cfg and Lazarus options?

    I did notice that there is no ...)fpc\2.5.1\source\ folder, only a ...fpc\2.4.2\source\ what do I do about that?
    Copy those files across so they can be re-compiled for 2.5.1?

    There is also no make.exe for 2.5.1, only 2.4.2

    cheers,
    Paul

  4. #4
    It doesn't matter where the source is, just that lazarus is pointed to the right version. You need to point lazarus to the directory where the 2.5.1 source is(compiler,ide,rtl,packages,utils,etc)

    Edit: which version of make.exe doesn't matter either
    Peregrinus, expectavi pedes meos in cymbalis
    Nullus norvegicorum sole urinat

  5. #5
    Quote Originally Posted by paul_nicholls View Post
    Ok, now I'm having another issue...it is obviously because I am using a different version of FPC to compile my Lazarus projects now, but I am not sure what to do about it

    And here is my fpc.cfg file (version 2.4.2, the 2.5.1 doesn't have one):
    That's probably the problem - you need fpc.cfg for 2.5.1 because you set it to be the compiler you use to compiler projects. Just copy fpc.cfg from 2.4.2 to 2.5.1 and replace all 2.4.2 with 2.5.1. Also, point FPC source directory to your SVN checkout-ed source of FPC (the source you compile with the above batch file). That should fix the problem.
    blog: http://alexionne.blogspot.com/

  6. #6
    Thanks guys! I used a modified copy of fpc.cfg for 2.5.1 and pointed to the 2.5.1 'source' folder...it all now works

    Thanks again

    cheers,
    Paul

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •