views:

2010

answers:

3

Hello,

What's the best and easiest way to build a c++ application, which was written with Visual Studio, for Linux? The code itself is ready - I used only cross-plattform libs.

Is it possible to prepare everything under Windows in Visual Studio and then build it with a cli tool under Linux? Are there any docs describing this?

Thanks,
mspoerr

EDIT: Some more information:
* Libs used: stl, wxwidgets, boost, asio, cryptlib
* very little Linux KnowHow

EDIT#2: I choosed the following solution: Make new project with kdevelop and compile everything there. Thank's for all replys.

+3  A: 

What's the best and easiest way to build a c++ application, which was written with Visual Studio, for Linux? The code itself is ready - I used only cross-plattform libs.

  • Check if there is anything that is not part of Standard C++
  • Rinse and repeat
  • Create a makefile or a KDevelop project

Et voilà!

dirkgently
can this makefile be generated from VisualStudio? Which changes are needed to make it work under Linux?/mspoerr
mspoerr
Some versions of VS can generate makefiles for nmake -- a Windows CLI based build system. The make you find on *nix systems is a bit different. You will need to weed out the differences. IMO, it'll be easier EITHER to 1) Use Code::Blocks (or some cross-platform IDE) and gcc on your Windows to get a build system working and then use it on Linux OR 2) use KDevelop which has a look-n-feel similar to VS to add source files/libs etc and get a autoconf based build system created for you.
dirkgently
+7  A: 

We're using CMake for Linux projects. CMake can generate KDevelop and Visual Studio project files, so you can just create your CMake file as the origin of platform-specific IDE files. The KDevelop generator is fine, so you can edit and compile in KDevelop (which will in turn call Make).

On the other hand, if you have nothing fancy, you can use CMake or just Make to build the thing on Linux, if you want to stay with your solution file (which is what I'm currently doing for a library with test applications). This approach gets complicated when your build process is more than just "throw these files at the compiler and let's see what it does", so the CMake solution is in my opinion a good thing for cross-platform development.

OregonGhost
I would like to have it the way, that I can use the existing VisualStudio settings and save it as makefile? and use it under Linux. Is that possible?/mspoerr
mspoerr
Visual C++, at least some time ago, supported exporting a project/solution to a makefile. You can try it, but the resulting makefile is (or was at that time) a bloody mess. You could also try to create an XSLT to transform the project file (not the solution, though) to anything you like, including a Makefile or CMake file.
OregonGhost
+2  A: 

Here is how to compile C code manually under Linux:

gcc -s -O2 -o prog -I. -Iincludedir1 -Iincludedir2 -Llibdir1 -Llibdir2 code1.c code2.c -luse1 -luse2

This will compile code1.c and code2.c to executable binary prog, loading .h files from ., includedir1 and includedir2, loading libraries (e.g. libuse1.so* and libuse2.so*) from directories libdir1 and libdir2, using libraries use1 (corresponding to file name libuse1.so*) and use2.

If you get undefined symbol errors in your .c files, you have to specify more -I flags. If you get undefined symbol errors in the .o file, you have to specify more -l flags. If you get cannot find -l... errors, you have to specify more -L flags.

pts
I'm assuming he has more than one file. Compiling without Makefiles is silly.
Zifre