Organizing Source Files

Started by
5 comments, last by Kylotan 10 years, 9 months ago

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

Advertisement

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

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

The path can be relative to the project directory.

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.

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

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.

This topic is closed to new replies.

Advertisement