Jump to content

  • Log In with Google      Sign In   
  • Create Account

Organizing Source Files


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 Psychopathetica   Members   -  Reputation: 186

Like
0Likes
Like

Posted 10 July 2013 - 04:29 PM

I have a problem in VC++ 2010. I wanna be able to put a bunch of source code files cpp and h into a folder, and not have it in the same directory as the solution, which is by default. Everytime I tried it keeps saying it couldnt find the file because no such file exists, even though i added the existing files into the project. I even tried creating a new project. Same thing. It always wants the files in the same directory as the solution. Is there a project property I need to change? Thanks in advance



Sponsor:

#2 Kylotan   Moderators   -  Reputation: 3338

Like
5Likes
Like

Posted 10 July 2013 - 06:13 PM

Visual Studio lets you put the normal source files (eg. .cpp) wherever you want. If the project contains the file, it will be built.

 

If however it says that it can't find an include file (eg. .h), that's more complex. There is a process that the compiler follows in order to resolve #include lines and you need to adhere to this. Generally speaking, if your header file is not in the same directory as whichever file is #including it, you need to either spell out the relative path in the #include line, or you need to add the directory to the project settings (under 'Additional Include Directories', if I remember correctly).



#3 Psychopathetica   Members   -  Reputation: 186

Like
0Likes
Like

Posted 10 July 2013 - 09:12 PM

Do i have to type the entire path over in Additional Include Directories? There must a small macro that has the solution path that I can follow with "\Source Code\Header Files\" That way if the project gets moved or transfered, or even if I share the project, its not fixed in one directory

#4 Aldacron   GDNet+   -  Reputation: 3181

Like
1Likes
Like

Posted 10 July 2013 - 10:03 PM

The path can be relative to the project directory.



#5 Psychopathetica   Members   -  Reputation: 186

Like
0Likes
Like

Posted 10 July 2013 - 11:02 PM

nvm I figured it out. Never heard of $(SolutionDir) before. And after some playing around over in Additional Include Directories, this did the trick so I can put my headers in whatever folders I want within my solution directory:

$(SolutionDir)Source Code\Header Files

Thats all I was trying to ask for, and it was a pain to find in Google for this answer. But thanks for trying guys.



#6 Trienco   Crossbones+   -  Reputation: 2172

Like
1Likes
Like

Posted 11 July 2013 - 10:08 PM

I'd generally prefer the ProjectDir (which also seems to be the "default" as in "what your path is relative to if you don't specify anything). Nothing more frustrating than adding a project as a dependency to a different solution and having all your paths fall apart.


f@dzhttp://festini.device-zero.de

#7 Kylotan   Moderators   -  Reputation: 3338

Like
2Likes
Like

Posted 12 July 2013 - 09:36 AM

nvm I figured it out. Never heard of $(SolutionDir) before. And after some playing around over in Additional Include Directories, this did the trick so I can put my headers in whatever folders I want within my solution directory:

$(SolutionDir)Source Code\Header Files

Thats all I was trying to ask for, and it was a pain to find in Google for this answer. But thanks for trying guys.

 

The reason that's hard to find, is because it's usually a bad idea to do that.

 

Firstly, if you organise your code into several different directories, you usually want those directories to form part of the #include line. Otherwise you'll run into trouble if you ever end up with similarly-named headers in different directories.

 

Secondly, you usually want files to be found relative to the project, not the solution - because projects are designed to be shared across multiple solutions. If you use $(SolutionDir) then that is going to break if you attempt to reuse that project in a different solution. You'd have to copy everything across, which means you lose many of the benefits of sharing code.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS