Reordering of <SRCFILES > list when compiling

Previous topic - Next topic

Slydog

Here's the <SRCFILES> section of my project file (.gbap), which was manually ordered:
Code (glbasic) Select
   <SRCFILES >
      <FILE PATH=".\MazeBall.gbas" />
      <FILE PATH=".\__LIB\_Common.gbas" />
      <FILE PATH=".\__LIB\_File.gbas" />
      <FILE PATH=".\__LIB\_Font.gbas" />
      <FILE PATH=".\__LIB\_gCamera.gbas" />
      <FILE PATH=".\__LIB\_gEntity.gbas" />
      <FILE PATH=".\__LIB\_gMesh.gbas" />
      <FILE PATH=".\__LIB\_gShader.gbas" />
      <FILE PATH=".\__LIB\_gSprite.gbas" />
      <FILE PATH=".\__LIB\_GUI.gbas" />
      <FILE PATH=".\__LIB\_gVector.gbas" />
      <FILE PATH=".\__LIB\_Input.gbas" />
      <FILE PATH=".\__LIB\_Sound.gbas" />
      <FILE PATH=".\__LIB\_Tween.gbas" />
      <FILE PATH=".\__Menus\Menu_Main.gbas" />
      <FILE PATH=".\__Menus\Menu_World.gbas" />
      <FILE PATH=".\__Menus\Menu_Level.gbas" />
      <FILE PATH=".\__Menus\Menu_Play.gbas" />
      <FILE PATH=".\__Play\Play_Maze.gbas" />
      <FILE PATH=".\__Play\Game_Over.gbas" />
      <FILE PATH=".\LevelDraw.gbas" />
      <FILE PATH=".\LevelMain.gbas" />
      <FILE PATH=".\Maze.gbas" />
      <FILE PATH=".\Gizmos.gbas" />
      <FILE PATH=".\_Main.gbas" />
   </SRCFILES>


But, whenever I recompile in the latest version of GLBasic [ver 9.033] it immediately sorts those entries by file name (ignoring the folder name) and resaves the .gbap project file's <SRCFILES> section as:
Code (glbasic) Select
   <SRCFILES >
      <FILE PATH=".\MazeBall.gbas" />
      <FILE PATH=".\__LIB\_Common.gbas" />
      <FILE PATH=".\__LIB\_File.gbas" />
      <FILE PATH=".\__LIB\_Font.gbas" />
      <FILE PATH=".\__LIB\_gCamera.gbas" />
      <FILE PATH=".\__LIB\_gEntity.gbas" />
      <FILE PATH=".\__LIB\_gMesh.gbas" />
      <FILE PATH=".\__LIB\_gShader.gbas" />
      <FILE PATH=".\__LIB\_gSprite.gbas" />
      <FILE PATH=".\__LIB\_GUI.gbas" />
      <FILE PATH=".\__LIB\_gVector.gbas" />
      <FILE PATH=".\__LIB\_Input.gbas" />
      <FILE PATH=".\_Main.gbas" />
      <FILE PATH=".\__LIB\_Sound.gbas" />
      <FILE PATH=".\__LIB\_Tween.gbas" />
      <FILE PATH=".\__Play\Game_Over.gbas" />
      <FILE PATH=".\Gizmos.gbas" />
      <FILE PATH=".\LevelDraw.gbas" />
      <FILE PATH=".\LevelMain.gbas" />
      <FILE PATH=".\Maze.gbas" />
      <FILE PATH=".\__Menus\Menu_Level.gbas" />
      <FILE PATH=".\__Menus\Menu_Main.gbas" />
      <FILE PATH=".\__Menus\Menu_Play.gbas" />
      <FILE PATH=".\__Menus\Menu_World.gbas" />
      <FILE PATH=".\__Play\Play_Maze.gbas" />
   </SRCFILES>


The problem is that I NEED the files to be compiled in a specific order or I get errors when declaring variables of a TYPE that was defined in another project file later in the compile order.  The solution for that error that worked for me was to ensure that the file defining the TYPE was always before any files that declared variables of that TYPE.
Oh, and this isn't a problem with my version 8 GLBasic.

I guess a work around would be to name files alphabetically by the order I want them compiled!  :blink:
My current project (WIP) :: TwistedMaze <<  [Updated: 2015-11-25]

Slydog

I just noticed in the GLBasic Logfile:
Code (glbasic) Select
// 9.033
...
   // Editor:
   //    Sorting project files by file name now.


Is that why I'm having my problem?
The compile order is now based on file name sorting?
Was there a reason this was changed?

I also notice the File pane in GLBasic has them sorted the same way!  (Was this why?!)
My current project (WIP) :: TwistedMaze <<  [Updated: 2015-11-25]

Kitty Hello

make an example where you have the trouble and I will have to fix it.
So far, rename the src files :S

Hark0

Quote from: Kitty Hello on 2011-Mar-18
make an example where you have the trouble and I will have to fix it.
So far, rename the src files :S

... or declare ALL vars/types/global in first/main GLB... ;)
http://litiopixel.blogspot.com
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica Development Indie Videogames · Pixel-Art · Retrocomputing · Electronic

MrTAToad

Globals are the work of the Devil!

AlienMenace

I think having to use additional local variables to ultimately set a single global variable is the work of the devil. :)
Apps published: 3

Kitty Hello

In order to avoid global variables do:


Code (glbasic) Select

// old code, no, kitty, no bite!
GLOBAL gf AS Tfoo
gf.bar()

// new code, purr, kitty, purr
FUNCTION gf AS Tfoo:
STATIC f as Tfoo
RETURN f
ENDFUNCTION

gf().bar()


The advantage is, that you can use it as if it was a global, you can ALIAS it and you can declare that in another gbas file with no "UNDECLARED" error message.


Slydog

I reinstalled 9.006 and the problem is gone, again.
This computer is at my work, and to install a newer version (update firewall issue?) I have to manually download the update package and manually install it.
I may have manually installed it wrong, or the update expected another update to be installed previously?

If / when I upgrade, I guess I'll just rename the files to be compiled alphabetically.
My current project (WIP) :: TwistedMaze <<  [Updated: 2015-11-25]

MrTAToad