Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Complex builds in Visual Studio

I have a few things that I cannot find a good way to perform in Visual Studio:

  1. Pre-build step invokes a code generator that generates some source files which are later compiled. This can be solved to a limited extent by adding blank files to the project (which are later replaced with real generated files), but it does not work if I don't know names and/or the number of auto-generated source files. I can easily solve it in GNU make using $(wildcard generated/*.c). How can I do something similar with Visual Studio?

  2. Can I prevent pre-build/post-build event running if the files do not need to be modified ("make" behaviour)? The current workaround is to write a wrapper script that will check timestamps for me, which works, but is a bit clunky.

  3. What is a good way to locate external libraries and headers installed outside of VS? In *nix case, they would normally be installed in the system paths, or located with autoconf. I suppose I can specify paths with user-defined macros in project settings, but where is a good place to put these macros so they can be easily found and adjusted?

Just to be clear, I am aware that better Windows build systems exist (CMake, SCons), but they usually generate VS project files themselves, and I need to integrate this project into existing VS build system, so it is desirable that I have just plain VS project files, not generated ones.

like image 660
Alex B Avatar asked Nov 21 '08 04:11

Alex B


2 Answers

  1. If you need make behavior and are used to it, you can create visual studio makefile projects and include them in your project.

  2. If you want less clunky, you can write visual studio macros and custom build events and tie them to specific build callbacks / hooks.

  3. You can try something like workspacewhiz which will let you setup environment variables for your project, in a file format that can be checked in. Then users can alter them locally.

like image 72
Epu Avatar answered Sep 24 '22 16:09

Epu


I've gone through this exact problem and I did get it working using Custom Build Rules.

But it was always a pain and worked poorly. I abandoned visual studio and went with a Makefile system using cygwin. Much better now.

cl.exe is the name of the VS compiler.

Update: I recently switched to using cmake, which comes with its own problems, and cmake can generate a visual studio solution. This seems to work well.

like image 23
Mark Beckwith Avatar answered Sep 24 '22 16:09

Mark Beckwith