mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-24 07:08:38 -05:00
6c9712c47b
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.
46 lines
1.5 KiB
CMake
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}")
|