Code::Blocks Forums

Developer forums (C::B DEVELOPMENT STRICTLY!) => Development => Topic started by: mandrav on December 12, 2005, 06:17:40 pm

Title: About project dependencies...
Post by: mandrav on December 12, 2005, 06:17:40 pm
How are project dependencies handled in MSVC workspaces? Is it an automatic procedure or does the user have to set them up manually?
Sorry I 'm asking, but I 've never used MSVC (not even seen it ;) ) and any help would be appreciated.

Is there a kind soul that could enlighten me?
Title: Re: About project dependencies...
Post by: takeshi miya on December 12, 2005, 06:35:58 pm
A picture says more than 1000 words.

Microsoft Visual C++ 2005 Express is available as a free download at the MSDN site until November 7, 2006.
http://msdn.microsoft.com/vstudio/express/visualc/download/
Title: Re: About project dependencies...
Post by: mandrav on December 12, 2005, 06:39:01 pm
Thanks but if I wanted to install it, I would 've done so by now ;)
Title: Re: About project dependencies...
Post by: takeshi miya on December 12, 2005, 06:44:08 pm
I wonder how we get support for MSVC 2005 if the main developer refuses to install it :?

Well, I myself say that because I don't want to install it :lol:
Title: Re: About project dependencies...
Post by: Michael on December 12, 2005, 06:52:21 pm
How are project dependencies handled in MSVC workspaces? Is it an automatic procedure or does the user have to set them up manually?
Sorry I 'm asking, but I 've never used MSVC (not even seen it ;) ) and any help would be appreciated.

Is there a kind soul that could enlighten me?


May be this msdn (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxurfprojectdependenciespropertiessolutionpropertiesdialogbox.asp) link could be useful.

For what I know, you select which projects depend on which other by using a dialog box. These dependencies are successively stored into a solution file.

Michael
Title: Re: About project dependencies...
Post by: mandrav on December 12, 2005, 07:04:29 pm
For what I know, you select which projects depend on which other by using a dialog box. These dependencies are successively stored into a solution file.

Thanks Michael :)
If what you say is true, it would be *too* easy ;)
Let me check out the link you gave me...
Title: Re: About project dependencies...
Post by: MortenMacFly on December 12, 2005, 07:05:20 pm
Is there a kind soul that could enlighten me?
I've attached the GUI how it is implemented in VC6 and VC.NET (2003). I hope this helps.

Morten.

Edit: :oops: :oops: :oops: Sorry, I've just seen that this is in german language. :oops: :oops: :oops:
To clarify:
MSVC6:
- "Projektabhängikeiten" = "Project dependencies"
- "Zu bearbeitendes Projekt markieren" = "Select project to modify"
- "Abhängig von folgenden Projekten" = "Depends on the following projects"
NET2003 (in addition):
- "Abhängigkeiten" = "Dependencies"
- "Buildreihenfolge" = "Build order"
- "Projekte in dieser Reihenfolge erstellen" =  "Build projects using the following order:"
- "Verwenden Sie die Registrierkarte..." = "Use the dependencies tab to change the build order."


[attachment deleted by admin]
Title: Re: About project dependencies...
Post by: Michael on December 12, 2005, 07:22:03 pm
Thanks Michael :)
If what you say is true, it would be *too* easy ;)

You are welcome :).

Here is an example of solution file which includes project dependencies:

Quote
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DXUT", "DXUT_2003.vcproj", "{E0CF097B-F22D-465B-A884-D89E55BD7ECD}"
   ProjectSection(ProjectDependencies) = postProject
   EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TESTDEP", "..\TESTDEP\TESTDEP.vcproj", "{DD91AD42-5DD3-4DF0-9DCB-1B6256118C8F}"
   ProjectSection(ProjectDependencies) = postProject
      {E0CF097B-F22D-465B-A884-D89E55BD7ECD} = {E0CF097B-F22D-465B-A884-D89E55BD7ECD}
   EndProjectSection
EndProject
Global
   GlobalSection(SolutionConfiguration) = preSolution
      Debug = Debug
      Release = Release
   EndGlobalSection
   GlobalSection(ProjectConfiguration) = postSolution
      {E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Debug.ActiveCfg = Debug|Win32
      {E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Debug.Build.0 = Debug|Win32
      {E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Release.ActiveCfg = Release|Win32
      {E0CF097B-F22D-465B-A884-D89E55BD7ECD}.Release.Build.0 = Release|Win32
      {DD91AD42-5DD3-4DF0-9DCB-1B6256118C8F}.Debug.ActiveCfg = Debug|Win32
      {DD91AD42-5DD3-4DF0-9DCB-1B6256118C8F}.Debug.Build.0 = Debug|Win32
      {DD91AD42-5DD3-4DF0-9DCB-1B6256118C8F}.Release.ActiveCfg = Release|Win32
      {DD91AD42-5DD3-4DF0-9DCB-1B6256118C8F}.Release.Build.0 = Release|Win32
   EndGlobalSection
   GlobalSection(ExtensibilityGlobals) = postSolution
   EndGlobalSection
   GlobalSection(ExtensibilityAddIns) = postSolution
   EndGlobalSection
EndGlobal


The TESTDEP project depend on DXUT project.

Hope this could help a bit.

Michael
Title: Re: About project dependencies...
Post by: takeshi miya on December 12, 2005, 07:34:24 pm
And here a MSVC 6 version of a workspace (*.dsw) containing dependencies:

The dependencies are as following:

ProjTest
    depends on ProjDynLib
    depends on ProjLib
ProjAnotherLib
    depends on ProjDynLib

Code
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!

###############################################################################

Project: "ProjAnotherLib"=.\ProjAnotherLib\ProjAnotherLib.dsp - Package Owner=<4>

Package=<5>
{{{
}}}

Package=<4>
{{{
    Begin Project Dependency
    Project_Dep_Name ProjDynLib
    End Project Dependency
}}}

###############################################################################

Project: "ProjDynLib"=.\ProjDynLib\ProjDynLib.dsp - Package Owner=<4>

Package=<5>
{{{
}}}

Package=<4>
{{{
}}}

###############################################################################

Project: "ProjLib"=.\ProjLib\ProjLib.dsp - Package Owner=<4>

Package=<5>
{{{
}}}

Package=<4>
{{{
}}}

###############################################################################

Project: "ProjTest"=.\ProjTest.dsp - Package Owner=<4>

Package=<5>
{{{
}}}

Package=<4>
{{{
    Begin Project Dependency
    Project_Dep_Name ProjDynLib
    End Project Dependency
    Begin Project Dependency
    Project_Dep_Name ProjLib
    End Project Dependency
}}}

###############################################################################

Global:

Package=<5>
{{{
}}}

Package=<3>
{{{
}}}

###############################################################################

Attached is a MSVC 6 screenshoot.

[attachment deleted by admin]
Title: Re: About project dependencies...
Post by: takeshi miya on December 12, 2005, 07:38:32 pm
I want to add that MSVC 2005 Compiler is the same as MSVC 2003 regarding this, only changes
Microsoft Visual Studio Solution File, Format Version 8.00
to
Microsoft Visual Studio Solution File, Format Version 9.00
Title: Re: About project dependencies...
Post by: Michael on December 12, 2005, 07:48:40 pm
I want to add that MSVC 2005 Compiler is the same as MSVC 2003 regarding this, only changes
Microsoft Visual Studio Solution File, Format Version 8.00
to
Microsoft Visual Studio Solution File, Format Version 9.00
The structure of the solution file also change with a new Format Version :wink:. From .NET 2002 (Format Version 7.00) to .NET 2005 (Format Version 9.00) through .NET (Format Version 8.00) small changes are detectable in the solution file structure (e.g., the preSolution in the Global section).

Michael
 
Title: Re: About project dependencies...
Post by: takeshi miya on December 12, 2005, 07:54:19 pm
I said "regarding this" because the structure do change (very small changes though), but the projects dependency part is exactly the same between Version 7.00 to 9.00.
Title: Re: About project dependencies...
Post by: Michael on December 12, 2005, 08:03:24 pm
I said "regarding this" because the structure do change (very small changes though), but the projects dependency part is exactly the same between Version 7.00 to 9.00.
Ok :).

Michael
Title: Re: About project dependencies...
Post by: thomas on December 12, 2005, 08:39:04 pm
I wonder how we get support for MSVC 2005 if the main developer refuses to install it :?
I have installed it, and I can only understand anybody who refuses to do so. This is the first IDE that took me half an hour to find where to change the system include paths and the first IDE which seems to have no template for a plain normal Win32 GUI application... you can do every crap with this IDE - just not build a plain normal Win32 GUI application from a template.
Title: Re: About project dependencies...
Post by: Michael on December 12, 2005, 09:08:23 pm
I have installed it, and I can only understand anybody who refuses to do so.

The installation of Microsoft Visual C++ 2005 Express was not a part of pleasure, I must admit :). But easier ( :roll:) as Visual Studio .NET 2002/2003.

This is the first IDE that took me half an hour to find where to change the system include paths and the first IDE which seems to have no template for a plain normal Win32 GUI application... you can do every crap with this IDE - just not build a plain normal Win32 GUI application from a template.

I have also spent sometime searching the template for Win32 GUI application without finding it... :?

Moreover, Microsoft Visual C++ 2005 Express has other limitations:

Quote
If you wish to create native Win32 programs, you will need to download the Microsoft Windows Platform SDK separately and install it. Like all the current versions of Microsoft software, it requires Windows 2000, XP, 2003, Vista (or their x64 versions). Note that unlike the commercial Visual Studio Professional 2005, it does not have 64-bit support, MFC, ATL, Win32 resource editor, macro assembler, source code control integration, etc.

Michael
Title: Re: About project dependencies...
Post by: thomas on December 12, 2005, 10:04:31 pm
Well, it is quite obvious that you need the platform SDK - but even if you have it, you cannot build a plain normal Win32 app.

Ok, you can... but you have to start with a console app and change the project's type and do everything by hand. This cannot seriously be the way... :lol:
Title: Re: About project dependencies...
Post by: mandrav on December 13, 2005, 01:36:17 am
Project dependencies inside workspaces implemented (rev.1499).
Title: Re: About project dependencies...
Post by: MortenMacFly on December 13, 2005, 10:30:18 am
Project dependencies inside workspaces implemented (rev.1499).
Yiannis, this rocks again!!!
Within my workspace I've had to order the projects according to it's build dependencies. Then a "build workspace" made sure that the dependencies were right. Now I can do REAL dependency which allows me to put libs I don't change often at the bottom of the workspace... THANKS!!! :D :D :D

Morten.

Ps.: I (of course) tried it by now and (of course :lol:) it works!!!
Title: Re: About project dependencies...
Post by: Michael on December 13, 2005, 11:18:13 am
Well, it is quite obvious that you need the platform SDK - but even if you have it, you cannot build a plain normal Win32 app.

Ok, you can... but you have to start with a console app and change the project's type and do everything by hand. This cannot seriously be the way... :lol:

Yes, you are right. It is not very serious and it would have been much better to add a Win32 GUI template directly :).

If I remeber correctly there is a template for windows form (managed code)...but personally, I prefer C++ pure and simple :).

Michael
Title: Re: About project dependencies...
Post by: Michael on December 13, 2005, 11:19:53 am
Project dependencies inside workspaces implemented (rev.1499).

Cool :D. Thank you very much.

Michael
Title: Re: About project dependencies...
Post by: killerbot on December 13, 2005, 01:05:09 pm
supercool, but I just rebuilded, and I don't seem to find the menu entries for it.
Title: Re: About project dependencies...
Post by: mandrav on December 13, 2005, 01:33:46 pm
supercool, but I just rebuilded, and I don't seem to find the menu entries for it.

"Project->Properties->Project's dependencies"
Title: Re: About project dependencies...
Post by: killerbot on December 13, 2005, 03:05:10 pm
Thanks.

The active project is 'saved' in the workspace file.
I can imagine that people want to put the worspace file in a version control system. Maybe it's better not to store it in the workspace then, but in another worspace layout file or something like that ?

For example : workspace for CB, main project depends on all the other projects, but I could make one of those others active for  development purposes. When I close CB then (time to go home ..) it will say the workspace has changed and so on ...


Lieven
Title: Re: About project dependencies...
Post by: MortenMacFly on December 13, 2005, 05:03:54 pm
When I close CB then (time to go home ..) it will say the workspace has changed and so on ...
I do have my workspace under version control and I see no problem. I would like to store the project dependencies in it to have another user using it. If the workspace file is saved then normally (in my case) only the date changes. A (good :)) version control system will detect that and not commit. If the project dependencies have changed then I normally want to provide these changes to the other users as well.

I have furthermore another workspace for my experiements which is the same as the "default" worspace plus aditional projects. Of course it would be nice if one workspace could include another workspace (and not only projects). Thus I could have my experiment workspace better seperated from the "default" workspace I provide to others. I would not require to update my experiment workspace if my "default" workspace changes.

Yiannis, how do you think about that? Is it worth a feature request?

Morten.
Title: Re: About project dependencies...
Post by: killerbot on December 13, 2005, 07:06:57 pm
Some ideas about future enhancements/requirements :

project X is dependent on project Y :
 - which target (M$ style : debug build depends on the other debug builds, release on the other release builds ...)
           --> dependency requires same target names, otherwise depend on the default target, and if that one is not around ...
 - specify by hand the target (table : project/targets) : selection by check boxes


What do you think ?

Lieven