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}")
|