How to build a Visual C++ Project for Linux?

Viewed 42666

What's the best and easiest way to build (for Linux) a C++ application which was written in Visual Studio? The code itself is ready - I used only cross-platform 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?

EDIT: Some more information:

  • Libs used: stl, wxwidgets, boost, asio, cryptlib.

  • Very little Linux know-how.

EDIT#2: I chose the following solution: Make new project with kdevelop and compile everything there.

4 Answers

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.

Here is how to compile C code manually under Linux without additional build tools:

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

However, if your project is larger than a couple of files, you may want to use a build tool instead (such as CMake, see OregonGhost's answer) to automate compilation of many files and to make it incremental. If you use a build tool, it will run gcc under the hood, with similar arguments above. It's useful to understand the arguments above, so you can troubleshoot if your automated build fails.

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.

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Ă !

Related