Visual Studio + Qt cleaning of generated files - visual-studio

When I press "Clean Solution" in Visual Studio 2008 for a Qt project all moc and ui header files from generatedfiles folder are cleaned.
I have one more my own generated *.h file in this folder, how to delete it too?
Where moc and ui headers file are deleted? I can't find any setting, with a option to add custom file except "Extension to Delete on Clean". But there is nothing about "generatedfiles".
And Project->Properties->Configuration Properties->General->Extensions to Delete on Clean can't be used in this case, because it ignores paths and recognize only extensions or file names.

The Visual Studio Qt Plugin is designed to put all files generated by uic, rcc and moc into a GeneratedFiles directory. Just like you stated, if you clean out the project, all of these generated files are also removed.
The files generated will be:
ui_*.h for all form files created with QtDesigner
qrc_*.cpp for all resource files created with QtResource
moc_*.h for all header files that contain Q_OBJECT
*.moc for all .cpp files that contain Q_OBJECT
The plugin is not designed to clean out any other files that you might put there yourself because it's not intelligent enough to know what your purpose with them is.
I would suggest that you put all your own header files somewhere else and delete them manually whenever you need to.

Related

Add a bunch of non source code files to a vcxproj

I need to add a folder containing lots of Qml files into a visual studio project. (The folder has subfolders and I want to add every thing to the project)
I tried to drag & drop from Explorer (and with the "Show all Files" way) to add the containing folder but this ways work only for source files (.cpp, .h, ...)
Do you know how to add easly lots of non-source-code files into a visual studio project ?

Keep source files in an external directory in Visual Studio/C++

Is there any way to instruct Visual Studio 2010 to keep my .h files and .cpp files separate from the project files and databases that VS generates to manage the project? Specifically, I would like to have a set up where the project files are in the VS install folder and the source files are in a completely separate folder in my Dropbox, and monitored by git.
You can put the .cpp and .h files wherever you want. A project file just lists the locations of the source files. Create the .cpp and .h files where you want them, perhaps with Notepad, and then use "Add Existing File" to add them to the project. (Right-click on the project name in Solution Explorer and choose "Add Existing File".)
Source files are represented in the project file using relative paths, so if both the sources and the projects are on the same disk drive, the sources will be represented something like "..\..\..\..\MyFiles\work\SuperCalc\Input\parser.cpp". If they're on a different drive, then they'll use absolute paths like "D:\MyFiles\work\SuperCalc\Input\parser.cpp".
A detailed example of a source file and build file layout which uses this technique is presented in this StackOverflow response about organizing Visual C++ source files. You may find it helpful.
As an aside, if you really want to store your project files in the VS install folder, which is under C:\Program Files\Microsoft Visual Studio 10.0", then you'll need to run VS in Administrator mode, because C:\Program Files is a protected directory.

Visual Studio not creating a "Properties" folder for a project?

This is in VS2010 ...
I can't figure this out, but my assembly is not outputting a Properties folder with AssemblyInfo and the other bits that go along with it. I checked the csproj file and the following:
<AppDesignerFolder>Properties</AppDesignerFolder>
Is present, yet on build nothing gets generated. What am I missing?
The things in that folder are not generated during a build, they should exist and be included in the build. When you create a new solution/project, those files will be created. If you delete them, then you'd have to manually recreated them or copy them from a separate project (and update them).
The AppDesignerFolder just tells Visual Studio where it should look for some of the UI elements that can be used to update the files there (i.e. the version information in AssemblyInfo).

Why are there .sln, .suo and .csproj files?

I began to use Visual Studio 2010. After I'm done with the C# program, I see that there are .sln, and .suo files in the project root directory, and a .csproj file in the subdirectory. What are those files for?
I need to identify the files to put into a Git repository. Together with the source code/documents that I create, I guess those three files are the only one that I have to take care of. However, I'm not sure if I'm tracking the correct files.
ADDED
How about the personal macro files? I have the Emacs key switch macro, does the .sln file or .csproj file have this macro?
You should commit the .sln and the .csproj, but not the .suo or the .user files.
You can add the following to .gitignore:
#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.obj
*.exe
*.pdb
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
[Bb]in
[Dd]ebug*/
*.lib
*.sbr
obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*
SLN (Solution) are the solution files. It stores info about the collection of projects that make up whatever you are developing. They contain projects, source control settings, or any other global level thing.
CSProj(Project file) are the actual code projects (C# Libraries, WCF Services, etc). It stores information at the project level. It wraps all relevant References, Classess, etc..
SUO (solution user options) are user settings files. Completely disposable, you can delete it and the most common thing you will lose are breakpoints.
Push everything except the SUO settings files.
Do not include any bin, debug, obj directory. The only DLLs (or compiled/generated object) you should include are those that are external to your application.
From MSDN:
A solution (.sln) is a structure for organizing projects in Visual Studio. It performs a function similar to Windows Program Group (.vbg) files in Visual Basic 6.0 and project workspace (.dsw) files in Visual C++ 6.0. The solution maintains the state information for projects in .sln (text-based, shared) and .suo (binary, user-specific solution options) files … [Source]
Furthermore, also from MSDN:
The solution user options (.suo) file is a structured storage, or compound, file stored in a binary format. You save user information into streams with the name of the stream being the key that will be used to identify the information in the .suo file … [Source]
You do not need to put .suo file in VCS. That is a user-specific file.
The SUO files do have a purpose and I disagree with the statement that they should always be ignored. I do not ignore them, and as a general practice I add them to our SVN repository. My projects are not always using the solution defaults for Startup Project or platform. I find it annoying that if I grab a new project it does not default to 64 bit and the proper platform. The SUO contains the settings to set these defaults properly.
The down side of this is that it's a binary file, so pretty much each time you open the solution and do anything the file will have changed. Typically the file is less than 100k, and unless you know you changed something, I don't commit the change.
In my case, I deleted all the "bin" and "obj" folder inside of my solution and projects

Storing source files outside project file directory in Visual Studio C++ 2009

Visual Studio projects assumes all files belonging to the project are situated in the same directory as the project file, or one underneath it.
For a particular project (in the non-Visual Studio sense) this is not what I want. I want to store the MSVC-specific files in another folder, because there might be other ways to build the application as well, for example with SCons. Also all the stuff MSVC splurts out clutters the source directory.
Example:
/source
/scons
/msvc <- here is where I want my MSVC-specific stuff
I can add the files, in Explorer, to the source directory manually, and then link them in Visual Studio with the project. It's not the end of the world, but it annoys me a bit that Visual Studio tries to dictate the folder structure of my project.
I was looking through the schemas for the project files but realized that this annoying assumption is in the IDE and not the format of the project files.
Do someone know a neater way to solve this than manually linking files to the project from the source directory?
I use this sometimes, pretty sure it's what you want:
make sure the Show All Files option is on in your solution explorer.
create a symlink that targets your source directory and put the link at the same level as your project, or even lower if you want finer control. The command is mklink /j target source
For the example project structure you show, you'd run mklink /msvc/source /source and in the project the source directory will show up as if it was in the project dir (well, actually it is). Additional bonus: adding new items through VS also automatically puts them in the right directory.
You can add files with links like this, they are searchable, view-able, but they do not checkout if you try to change them, also visual studio leaves the wildcards in place:
<ItemGroup>
<Content Include="..\Database Schema\Views\*.sql">
<Link>Views\*.sql</Link>
</Content>
</ItemGroup>
This goes inside the .proj file.

Resources