eclipse-cdt / cdt

Eclipse CDT™ C/C++ Development Tools

Home Page:http://eclipse.org/cdt

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CMake projects created with special characters generate uncompilable example

jonahgraham opened this issue · comments

Describe the bug

Using any characters that are not legal for C identifiers in the project names causes compiler errors (except (space) which is handled already).

To Reproduce
Steps to reproduce the behavior:

  1. Create a new C/C++ Project
  2. Choose CMake project (the small Hello World example)
  3. Create a project name with - (dashes) in it
  4. Attempt to build project

For example, call the project example-cmake-project and observe that the config.h.in is invalid C code:

#define example-cmake-project_VERSION_MAJOR @example-cmake-project_VERSION_MAJOR@
#define example-cmake-project_VERSION_MINOR @example-cmake-project_VERSION_MINOR@

PR #105 introduced the config.h.in file and it does have special handling for spaces, but needs it for other characters too:

#define ${projectName?replace(" ", "_")}_VERSION_MAJOR @${projectName?replace(" ", "_")}_VERSION_MAJOR@
#define ${projectName?replace(" ", "_")}_VERSION_MINOR @${projectName?replace(" ", "_")}_VERSION_MINOR@

cc: @mbooth101

The problem seems more general....

Creating a project called: Cake & ice-cream is 100% perfect, A+++ experience, don't @ me.

It fails at the first non alphanumeric character and results in this error (i.e. the ampersand ruins the XML manifest):

Loading template manifest
javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 16; The entity name must immediately follow the '&' in the entity reference.]

Same error occurs for all core build project types (Make/CMake/Meson)