[cmake-developers] [PATCH] WINCE, VS: Allow selecting an SDK for Windows CE on Visual Studio
Bach, Pascal
pascal.bach at siemens.com
Wed Sep 3 13:21:15 EDT 2014
Looks like I missed the Description :(
This is only a first draft and I would like to hear if I am on the right track.
The patch implements the SDK selection for Windows CE.
If CMAKE_SYSTEM_NAME="WindowsCE" the user has to specify an SDK using the variable: CMAKE_VS_WINCE_SDK
The implementation is inspired by WindowsPhone and WindowsStore.
Current limitations:
- Only works with Windows CE 8.0
Pascal
> -----Original Message-----
> From: Pascal Bach [mailto:pascal.bach at siemens.com]
> Sent: Mittwoch, 3. September 2014 19:16
> To: cmake-developers at cmake.org
> Cc: Bach, Pascal
> Subject: [PATCH] WINCE, VS: Allow selecting an SDK for Windows CE on
> Visual Studio
>
> Set CMAKE_VS_WINCE_SDK to specify the SDK.
> ---
> Source/cmGlobalVisualStudio10Generator.cxx | 48
> ++++++++++++++++++++++++++++
> Source/cmGlobalVisualStudio10Generator.h | 7 ++++
> Source/cmGlobalVisualStudio11Generator.cxx | 12 +++++++
> Source/cmGlobalVisualStudio11Generator.h | 2 ++
> Source/cmGlobalVisualStudio12Generator.cxx | 12 +++++++
> Source/cmGlobalVisualStudio12Generator.h | 2 ++
> 6 files changed, 83 insertions(+)
>
> diff --git a/Source/cmGlobalVisualStudio10Generator.cxx
> b/Source/cmGlobalVisualStudio10Generator.cxx
> index 19aa52c..5c1fd4b 100644
> --- a/Source/cmGlobalVisualStudio10Generator.cxx
> +++ b/Source/cmGlobalVisualStudio10Generator.cxx
> @@ -165,6 +165,14 @@ bool
> cmGlobalVisualStudio10Generator::InitializeSystem(cmMakefile* mf)
> return false;
> }
> }
> + else if (this->SystemName == "WindowsCE")
> + {
> + this->SystemIsWindowsCE = true;
> + if (!this->InitializeWindowsCE(mf))
> + {
> + return false;
> + }
> + }
> return true;
> }
>
> @@ -187,6 +195,46 @@ bool
> cmGlobalVisualStudio10Generator::InitializeWindowsStore(cmMakefile* mf)
> }
>
> //----------------------------------------------------------------------------
> +bool cmGlobalVisualStudio10Generator::InitializeWindowsCE(cmMakefile*
> mf)
> +{
> + this->DefaultPlatformToolset = this->SelectWindowsCEToolset();
> + if (this->DefaultPlatformToolset.empty())
> + {
> + cmOStringStream e;
> + e << this->GetName() << " supports Windows CE '8.0', but not '"
> + << this->SystemVersion << "'. Check CMAKE_SYSTEM_VERSION.";
> + mf->IssueMessage(cmake::FATAL_ERROR, e.str());
> + return false;
> + }
> +
> + if (const char* platformName = mf-
> >GetDefinition("CMAKE_VS_WINCE_SDK"))
> + {
> + this->PlatformName = platformName;
> + }
> + else {
> + cmOStringStream e;
> + e << this->GetName() << " for " << this->GetSystemName() << " requires
> an SDK. Please set CMAKE_VS_WINCE_SDK to the name of your SDK.";
> + mf->IssueMessage(cmake::FATAL_ERROR, e.str());
> + return false;
> + }
> +
> + return true;
> +}
> +
> +//----------------------------------------------------------------------------
> +std::string cmGlobalVisualStudio10Generator::SelectWindowsCEToolset()
> const
> +{
> + if (this->SystemVersion == "8.0")
> + {
> + return "CE800";
> + }
> + else
> + {
> + return "";
> + }
> +}
> +
> +//----------------------------------------------------------------------------
> void cmGlobalVisualStudio10Generator
> ::AddVSPlatformToolsetDefinition(cmMakefile* mf) const
> {
> diff --git a/Source/cmGlobalVisualStudio10Generator.h
> b/Source/cmGlobalVisualStudio10Generator.h
> index 11fa954..9bceb2c 100644
> --- a/Source/cmGlobalVisualStudio10Generator.h
> +++ b/Source/cmGlobalVisualStudio10Generator.h
> @@ -75,6 +75,10 @@ public:
> bool TargetsWindowsStore() const
> { return this->SystemIsWindowsStore; }
>
> + /** Return true if building for WindowsCE */
> + bool TargetsWindowsCE() const
> + { return this->SystemIsWindowsCE; }
> +
> /**
> * Where does this version of Visual Studio look for macros for the
> * current user? Returns the empty string if this version of Visual
> @@ -106,8 +110,10 @@ protected:
> virtual bool InitializeSystem(cmMakefile* mf);
> virtual bool InitializeWindowsPhone(cmMakefile* mf);
> virtual bool InitializeWindowsStore(cmMakefile* mf);
> + virtual bool InitializeWindowsCE(cmMakefile* mf);
> virtual std::string SelectWindowsPhoneToolset() const { return ""; }
> virtual std::string SelectWindowsStoreToolset() const { return ""; }
> + virtual std::string SelectWindowsCEToolset() const;
>
> virtual const char* GetIDEVersion() { return "10.0"; }
>
> @@ -119,6 +125,7 @@ protected:
> std::string SystemVersion;
> bool SystemIsWindowsPhone;
> bool SystemIsWindowsStore;
> + bool SystemIsWindowsCE;
> bool ExpressEdition;
>
> bool UseFolderProperty();
> diff --git a/Source/cmGlobalVisualStudio11Generator.cxx
> b/Source/cmGlobalVisualStudio11Generator.cxx
> index 39bbdc0..a71c42e 100644
> --- a/Source/cmGlobalVisualStudio11Generator.cxx
> +++ b/Source/cmGlobalVisualStudio11Generator.cxx
> @@ -159,6 +159,12 @@ bool
> cmGlobalVisualStudio11Generator::InitializeWindowsStore(cmMakefile* mf)
> }
>
> //----------------------------------------------------------------------------
> +bool cmGlobalVisualStudio11Generator::InitializeWindowsCE(cmMakefile*
> mf)
> +{
> + return cmGlobalVisualStudio10Generator::InitializeWindowsCE(mf);
> +}
> +
> +//----------------------------------------------------------------------------
> std::string
> cmGlobalVisualStudio11Generator::SelectWindowsPhoneToolset() const
> {
> if(this->SystemVersion == "8.0")
> @@ -179,6 +185,12 @@ std::string
> cmGlobalVisualStudio11Generator::SelectWindowsStoreToolset() const
> }
>
> //----------------------------------------------------------------------------
> +std::string cmGlobalVisualStudio11Generator::SelectWindowsCEToolset()
> const
> +{
> + return this-
> >cmGlobalVisualStudio10Generator::SelectWindowsCEToolset();
> +}
> +
> +//----------------------------------------------------------------------------
> void cmGlobalVisualStudio11Generator::WriteSLNHeader(std::ostream&
> fout)
> {
> fout << "Microsoft Visual Studio Solution File, Format Version 12.00\n";
> diff --git a/Source/cmGlobalVisualStudio11Generator.h
> b/Source/cmGlobalVisualStudio11Generator.h
> index bbd935c..9dd3271 100644
> --- a/Source/cmGlobalVisualStudio11Generator.h
> +++ b/Source/cmGlobalVisualStudio11Generator.h
> @@ -36,8 +36,10 @@ public:
> protected:
> virtual bool InitializeWindowsPhone(cmMakefile* mf);
> virtual bool InitializeWindowsStore(cmMakefile* mf);
> + virtual bool InitializeWindowsCE(cmMakefile* mf);
> virtual std::string SelectWindowsPhoneToolset() const;
> virtual std::string SelectWindowsStoreToolset() const;
> + virtual std::string SelectWindowsCEToolset() const;
> virtual const char* GetIDEVersion() { return "11.0"; }
> bool UseFolderProperty();
> static std::set<std::string> GetInstalledWindowsCESDKs();
> diff --git a/Source/cmGlobalVisualStudio12Generator.cxx
> b/Source/cmGlobalVisualStudio12Generator.cxx
> index 29ecfe0..c784cae 100644
> --- a/Source/cmGlobalVisualStudio12Generator.cxx
> +++ b/Source/cmGlobalVisualStudio12Generator.cxx
> @@ -139,6 +139,12 @@ bool
> cmGlobalVisualStudio12Generator::InitializeWindowsStore(cmMakefile* mf)
> }
>
> //----------------------------------------------------------------------------
> +bool cmGlobalVisualStudio12Generator::InitializeWindowsCE(cmMakefile*
> mf)
> +{
> + return cmGlobalVisualStudio11Generator::InitializeWindowsCE(mf);
> +}
> +
> +//----------------------------------------------------------------------------
> std::string
> cmGlobalVisualStudio12Generator::SelectWindowsPhoneToolset() const
> {
> if(this->SystemVersion == "8.1")
> @@ -159,6 +165,12 @@ std::string
> cmGlobalVisualStudio12Generator::SelectWindowsStoreToolset() const
> }
>
> //----------------------------------------------------------------------------
> +std::string cmGlobalVisualStudio12Generator::SelectWindowsCEToolset()
> const
> +{
> + return this-
> >cmGlobalVisualStudio11Generator::SelectWindowsCEToolset();
> +}
> +
> +//----------------------------------------------------------------------------
> void cmGlobalVisualStudio12Generator::WriteSLNHeader(std::ostream&
> fout)
> {
> fout << "Microsoft Visual Studio Solution File, Format Version 12.00\n";
> diff --git a/Source/cmGlobalVisualStudio12Generator.h
> b/Source/cmGlobalVisualStudio12Generator.h
> index ec85f10..5d8c125 100644
> --- a/Source/cmGlobalVisualStudio12Generator.h
> +++ b/Source/cmGlobalVisualStudio12Generator.h
> @@ -41,8 +41,10 @@ public:
> protected:
> virtual bool InitializeWindowsPhone(cmMakefile* mf);
> virtual bool InitializeWindowsStore(cmMakefile* mf);
> + virtual bool InitializeWindowsCE(cmMakefile* mf);
> virtual std::string SelectWindowsPhoneToolset() const;
> virtual std::string SelectWindowsStoreToolset() const;
> + virtual std::string SelectWindowsCEToolset() const;
> virtual const char* GetIDEVersion() { return "12.0"; }
> private:
> class Factory;
> --
> 1.7.10.4
More information about the cmake-developers
mailing list