diff options
author | David Cole <david.cole@kitware.com> | 2011-01-04 23:51:15 (GMT) |
---|---|---|
committer | David Cole <david.cole@kitware.com> | 2011-01-05 15:37:14 (GMT) |
commit | 13caaa3eb74a11dbf067409ea129321718d34dfe (patch) | |
tree | 82d8b9b3cd5a190cf03e4d6041fd06dd334768f8 /Tests/VSMidl/src | |
parent | c59ed2955294d6b8fe25926c95711f794284354f (diff) | |
download | CMake-13caaa3eb74a11dbf067409ea129321718d34dfe.zip CMake-13caaa3eb74a11dbf067409ea129321718d34dfe.tar.gz CMake-13caaa3eb74a11dbf067409ea129321718d34dfe.tar.bz2 |
VS10: Finish Midl support (#11461)
This commit addresses all of the following:
http://public.kitware.com/Bug/view.php?id=8165
http://public.kitware.com/Bug/view.php?id=10687
http://public.kitware.com/Bug/view.php?id=11311
http://public.kitware.com/Bug/view.php?id=11461
With this commit, the midl support for VS10 is as
complete as midl support ever was for VS9 and earlier.
The VSMidl test should run on all Visual Studio
generator based dashboards.
CMake no longer sends C++ compiler /D flag values
to the midl compiler in Visual Studio generated
projects. I think if we want to add that in the
future, we should add a way to pass midl compiler
specific flags and perhaps an optional way to add
in the C++ definitions, too. For now, not sending
them along gets past the immediate problem wherein
idl files in a CMake VS generated project just didn't
work at all.
The VSMidl test added in this commit was inspired by
the patch attached to 8165.
The test had to be modified such that it will run in
a directory whose name contains no spaces. There is an
existing bug filed against VS10's midl asking Microsoft
to fix that problem. But for now, the test added in this
commit works by copying the source directory to a location
that avoids spaces in the directory names.
Inspired-By: Robert Lenhardt
Diffstat (limited to 'Tests/VSMidl/src')
-rw-r--r-- | Tests/VSMidl/src/CMakeLists.txt | 5 | ||||
-rw-r--r-- | Tests/VSMidl/src/main.cpp | 17 | ||||
-rw-r--r-- | Tests/VSMidl/src/test.idl | 30 |
3 files changed, 52 insertions, 0 deletions
diff --git a/Tests/VSMidl/src/CMakeLists.txt b/Tests/VSMidl/src/CMakeLists.txt new file mode 100644 index 0000000..28bb120 --- /dev/null +++ b/Tests/VSMidl/src/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 2.8) +project(VSMidl) + +include_directories("${CMAKE_CURRENT_BINARY_DIR}/\$(IntDir)") +add_executable(VSMidl main.cpp test.idl) diff --git a/Tests/VSMidl/src/main.cpp b/Tests/VSMidl/src/main.cpp new file mode 100644 index 0000000..6b78fcc --- /dev/null +++ b/Tests/VSMidl/src/main.cpp @@ -0,0 +1,17 @@ +#include <stdio.h> +#include <test.h> +#include <test_i.c> + +int main(int argc, char** argv) +{ + IID libid = LIBID_CMakeMidlTestLib; + CLSID clsid = CLSID_CMakeMidlTest; + IID iid = IID_ICMakeMidlTest; + + printf("Running '%s'\n", argv[0]); + printf(" libid starts with '0x%08lx'\n", (long) libid.Data1); + printf(" clsid starts with '0x%08lx'\n", (long) clsid.Data1); + printf(" iid starts with '0x%08lx'\n", (long) iid.Data1); + + return 0; +} diff --git a/Tests/VSMidl/src/test.idl b/Tests/VSMidl/src/test.idl new file mode 100644 index 0000000..fd755c7 --- /dev/null +++ b/Tests/VSMidl/src/test.idl @@ -0,0 +1,30 @@ +import "oaidl.idl"; +import "ocidl.idl"; + +[ + object, + uuid(258CCEBE-8EE4-4A48-B78C-AC53BCD59E28), + dual, + nonextensible, + helpstring("ICMakeTest Interface"), + pointer_default(unique) +] +interface ICMakeMidlTest : IUnknown +{ + [id(1), helpstring("method Method")] HRESULT Method(); +} + +[ + uuid(0537BA59-7EEC-48F8-BD4B-369BC7D9807E), +] +library CMakeMidlTestLib +{ + [ + uuid(D2A90807-019A-46E5-BF47-FF4FA4352D2A), + helpstring("CMakeMidlTest Class") + ] + coclass CMakeMidlTest + { + [default] interface ICMakeMidlTest; + }; +} |