tags:

views:

906

answers:

2

Hello,

gcc 4.4.2 / Visual Studio C++ 2008

I have been using cmake on linux, without any problems.

Now I have ported by application to run on windows.

I generated the solution files using cmake -G "Visual Studio 9 2008 ../src"

However, I know that cmake only creates a Makefile that is used by the compiler to build your application.

I open my solution in Visual Studio, I press the F7 key to compile.

I am wondering does it actually use the Makefile that was generated by cmake? Or it is just compiling the application like any normal visual studio program?

Many thanks for any advice,

+3  A: 

CMake generates "real" .vcproj files, so Visual Studio will build your project like any normal Visual Studio project. There are no makefiles involved.

JesperE
The part I am curious about is the CMakeList.txt. Does the compiler do anything with this. The reason I asked was when I edited my CMakelists.txt I got a link error because I didn't add a library name "ws2_32. i.e. TARGET_LINK_LIBRARIES(clt client ws2_32). So how does the compiler use the CMakeLists.txt? Thanks.
robUK
CMake creates *.vcproj files for you based on the information in the CMakeLists.txt file. The TARGET_LINK_LIBRARIES command tells CMake to put in the necessary directives in the *.vcproj files so that the Visual Studio compiler will link with the correct libraries.
JesperE
+2  A: 

Cmake generates a Visual Studio Solution and Project file.

The solution contains at least three projects:

  • ALL_BUILD
  • YourProject
  • ZERO_CHECK

The solution is set up so that when you build your project (by build solution, or build project) "YourProject" will be built and then ZERO_CHECK will be built, causing cmake to run and check if anything has changed. If anything has changed, the solution and project file will be regenerated and Visual Studio will ask if you would like to reload.

The compilation of your program is done by Visual Studio, as it would if you set it up manually, but Visual Studio will run cmake, and thus check if anything has changed, and the project files should be regenerated.

Kleist