CMake/Tests/VSWindowsFormsResx/CMakeLists.txt
Jonas Andersen 6c9712c47b VS: Add Resx configuration to the vcxproj file
In my project group we are using CMake to generate c++/cli winform
projects and I noticed the work done in commit 79ec7868 (VS: Add Windows
Forms Support, 2013-04-29) was in the right direction for solving some
of the problems we were facing.

The changes as submitted was breaking some functionality in our
projects, so I made some changes that fixes our problems and I believe
that it will also work for others.

* Resx files did not link correctly with the winform h-file so I added
  the Resx configuration to the vcxproj file.

* I removed the functionality for setting <CLRSupport> true for the
  project based on if an resx-file is pressent.  This is preventing
  us from using native cpp code.  Also this do not address that some
  projects will need to set other options like clr:pure, clr:safe.
  This could be implemented as a cmake option, so it is possible to
  specify exactly what is needed.  Existing VSWindowsFormsResx Test
  project is updated so it will be working with my changes.
2013-06-28 09:23:41 -04:00

46 lines
1.5 KiB
CMake

#
# Example CMakeLists.txt file to demonstrate how to make a designable Windows Forms project with CMake.
#
# Code modifications and example by John Farrier, john.farrier@helleboreconsulting.com
#
cmake_minimum_required(VERSION 2.8.10)
# Project Name
project(VSWindowsFormsResx CXX)
include(CheckFunctionExists)
include(CheckCXXSourceCompiles)
include(CheckIncludeFile)
# Note: The designable form is assumed to have a .h extension as is default in Visual Studio.
# Node: The designable form is assumed to have a .resx file with the same name and path (save extension) as is default in Visual Studio
set(TARGET_H
WindowsFormsResx/MyForm.h
WindowsFormsResx/Header.h
)
set(TARGET_SRC
WindowsFormsResx/MyForm.cpp
WindowsFormsResx/Source.cpp
)
set_source_files_properties(${TARGET_SRC} PROPERTIES COMPILE_FLAGS "/clr")
set(TARGET_RESX
WindowsFormsResx/MyForm.resx
)
set(TARGET_LIBRARIES ${SYSLIBS})
add_executable(${PROJECT_NAME} ${TARGET_SRC} ${TARGET_H} ${TARGET_RESX})
# Note: The property VS_GLOBAL_KEYWORD must be set.
set_property(TARGET ${PROJECT_NAME} PROPERTY VS_GLOBAL_KEYWORD "ManagedCProj")
# Note: The property VS_DOTNET_REFERENCES must be set.
set_property(TARGET ${PROJECT_NAME} PROPERTY VS_DOTNET_REFERENCES "System" "System.Data" "System.Drawing" "System.Windows.Forms" "System.Xml")
# Note: Modification of compiler flags is required for CLR compatibility now that we are using .resx files.
string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")