[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