Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to support both vcxproj to cmake on a project?

I'm developing cross-platform c++ project. The original idea is to work with msvc2010 and later compile for other systems with the help of CMake and Hudson. It doesn't seem to be convenient manually change CMake files after changes in studio settings.

So, what’s the easiest way: to write parser for vcxproj and vcxproj.filters, or there is another good solution?

like image 531
tikkerey Avatar asked Jul 11 '11 11:07

tikkerey


People also ask

What is the difference between Vcproj and Vcxproj?

Basically, . vcproj is used by the old VCBuild system, and . vcxproj is used by the new XML based MSBuild system.

What is the use of CMake?

CMake is a meta build system that uses scripts called CMakeLists to generate build files for a specific environment (for example, makefiles on Unix machines). When you create a new CMake project in CLion, a CMakeLists. txt file is automatically generated under the project root.

What is CMake project in Visual Studio?

Visual Studio's native support for CMake enables you to edit, build, and debug CMake projects on Windows, the Windows Subsystem for Linux (WSL), and remote systems from the same instance of Visual Studio. CMake project files (such as CMakeLists.

Is CMake open source?

CMake is an open-source, cross-platform family of tools designed to build, test and package software.


2 Answers

It might be useful, from time to time, to do this type of conversion, say for porting. On my travels I've found the following, in no particular order:

Specifically for VS to CMake/GYP:

  • vcproj2cmake
  • vcxproj2cmake (not a typo!)
  • gypify.py is a .sln/solution-reading Gyp file generator. Gyp is a Cmake alternative, currently being used by the Chromium project (base for Google's Chrome browser). Gyp will output Makefile, Visual Studio or XCode build files (see Gyp's '-f [make|scons|msvc|xcode]' switch). This Python script is quite promising, I'm hoping to modify it soon to correctly specify header-containing folders for gcc's '-I' include parameter.

Other Cmake/Make-related conversion tools:

  • Make It So Converts Visual Studio solutions to Linux gcc makefiles
  • sln2mak C# project
  • sln2mak Perl script
  • GUCEF Project includes the ProjectGenerator tool, for Cmake
  • gencmake (ruby) – KDE Project
  • 'pbtomake' says it can convert XCode xcodeproj/pbproj files to Makefiles (maybe outdated)

Cheers

Rich

like image 132
Big Rich Avatar answered Sep 19 '22 15:09

Big Rich


You're coming at it backwards -- set up all your CMakeLists.txt and then generate the MSVC project from it.

It shouldn't be hard or time-consuming. Basically you just need to say which directories to look into, declare your include paths, collect your *.cpps for each library with a glob expression, and declare your dependencies.

If you have to set up anything else, then your project probably isn't very portable :-/

like image 32
spraff Avatar answered Sep 22 '22 15:09

spraff