mspoerr
mspoerr

Reputation: 2710

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

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:

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

Upvotes: 40

Views: 44883

Answers (4)

Rich Turner
Rich Turner

Reputation: 11014

8 years later ...

I stumbled across this question today and thought you might like to take a look at Visual C++ for Linux.

Released in March 2016, VC++ for Linux allows you to create a project in VC++, and then build it in a Linux machine/VM using native Linux tools. What's more, you can also debug your app from within VS since the Linux tools allow the VS debugger to drive GDB in your Linux machine/VM via SSH!!

Looks like this is almost exactly what @mspoerr was asking for :)

Upvotes: 8

pts
pts

Reputation: 87441

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.

Upvotes: 7

OregonGhost
OregonGhost

Reputation: 23769

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.

Upvotes: 19

dirkgently
dirkgently

Reputation: 111316

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

Upvotes: 4

Related Questions