•      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.

6 replies to this topic

### #1Psychopathetica  Members

225
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

### #2Kylotan  Moderators

6392
Like
5Likes
Like

Posted 10 July 2013 - 06:13 PM

POPULAR

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).

### #3Psychopathetica  Members

225
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

### #4Aldacron  GDNet+

4329
Like
1Likes
Like

Posted 10 July 2013 - 10:03 PM

The path can be relative to the project directory.

### #5Psychopathetica  Members

225
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.

### #6Trienco  Members

2555
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

### #7Kylotan  Moderators

6392
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.