From: Atanas Gegov <atanas.ge...@bmw-carit.de> Added a C and C++ HelloWorld template projects for CMake. The both have the new CMake project type and are therefore built with the CMake toolchain. --- .../build.properties | 1 + plugins/org.yocto.cmake.managedbuilder/plugin.xml | 17 ++++++ .../HelloWorldCCMakeProject/src/CMakeLists.txt | 34 +++++++++++ .../HelloWorldCCMakeProject/src/main.c | 21 +++++++ .../HelloWorldCCMakeProject/template.properties | 31 ++++++++++ .../HelloWorldCCMakeProject/template.xml | 61 ++++++++++++++++++++ .../HelloWorldCPPCMakeProject/src/CMakeLists.txt | 34 +++++++++++ .../HelloWorldCPPCMakeProject/src/main.cpp | 21 +++++++ .../HelloWorldCPPCMakeProject/template.properties | 31 ++++++++++ .../HelloWorldCPPCMakeProject/template.xml | 61 ++++++++++++++++++++ 10 files changed, 312 insertions(+) create mode 100644 plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/src/CMakeLists.txt create mode 100644 plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/src/main.c create mode 100644 plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/template.properties create mode 100644 plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/template.xml create mode 100644 plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/src/CMakeLists.txt create mode 100644 plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/src/main.cpp create mode 100644 plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/template.properties create mode 100644 plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/template.xml
diff --git a/plugins/org.yocto.cmake.managedbuilder/build.properties b/plugins/org.yocto.cmake.managedbuilder/build.properties index 3e5f9ad..3945652 100644 --- a/plugins/org.yocto.cmake.managedbuilder/build.properties +++ b/plugins/org.yocto.cmake.managedbuilder/build.properties @@ -3,4 +3,5 @@ output.. = bin/ bin.includes = META-INF/,\ .,\ plugin.xml,\ + templates/,\ OSGI-INF/ diff --git a/plugins/org.yocto.cmake.managedbuilder/plugin.xml b/plugins/org.yocto.cmake.managedbuilder/plugin.xml index 8718ae6..7aa6671 100644 --- a/plugins/org.yocto.cmake.managedbuilder/plugin.xml +++ b/plugins/org.yocto.cmake.managedbuilder/plugin.xml @@ -263,4 +263,21 @@ </configuration> </projectType> </extension> + <extension + point="org.eclipse.cdt.core.templates"> + <template + filterPattern=".*gcc" + id="org.yocto.cmake.managedbuilder.template.helloWorldCCMakeProject" + isCategory="false" + location="templates/projecttemplates/HelloWorldCCMakeProject/template.xml" + projectType="org.yocto.sdk.ide.buildArtefact.cmake.exe"> + </template> + <template + filterPattern=".*g\+\+" + id="org.yocto.cmake.managedbuilder.template.helloWorldCPPCMakeProject" + isCategory="false" + location="templates/projecttemplates/HelloWorldCPPCMakeProject/template.xml" + projectType="org.yocto.sdk.ide.buildArtefact.cmake.exe"> + </template> + </extension> </plugin> diff --git a/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/src/CMakeLists.txt b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/src/CMakeLists.txt new file mode 100644 index 0000000..e6482a7 --- /dev/null +++ b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/src/CMakeLists.txt @@ -0,0 +1,34 @@ +cmake_minimum_required (VERSION 2.8.1) + +######## Project settings ######## +PROJECT($(projectName)) +SET(LICENSE "TBD") + +######## Build and include settings ######## +include_directories( + inc +) + +link_directories( + ${LINK_DIRECTORIES} +) + + +file(GLOB SOURCES + "src/*.c" +) + +add_executable( + $(projectName) + + ${SOURCES} +) + +TARGET_LINK_LIBRARIES( + $(projectName) +) + +######## Install targets ######## +INSTALL(TARGETS $(projectName) + RUNTIME DESTINATION usr/bin +) diff --git a/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/src/main.c b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/src/main.c new file mode 100644 index 0000000..78b4e23 --- /dev/null +++ b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/src/main.c @@ -0,0 +1,21 @@ +/** @mainpage $(projectName) - $(vendor) + * + * @author $(author) <$(email)> + * @version $(projectVersion) +**/ + + +#include <stdio.h> +/** + * Main class of project $(projectName) + * + * @param argc the number of arguments + * @param argv the arguments from the commandline + * @returns exit code of the application + */ +int main(int argc, char **argv) { + // print a greeting to the console + printf("Hello World!\n"); + + return 0; +} diff --git a/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/template.properties b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/template.properties new file mode 100644 index 0000000..bc37c1c --- /dev/null +++ b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/template.properties @@ -0,0 +1,31 @@ +#/******************************************************************************* +# * Copyright (c) 2013 BMW Car IT GmbH. +# * All rights reserved. This program and the accompanying materials +# * are made available under the terms of the Eclipse Public License v1.0 +# * which accompanies this distribution, and is available at +# * http://www.eclipse.org/legal/epl-v10.html +# * +# * Contributors: +# * BMW Car IT - initial implementation +# *******************************************************************************/ + +# Template +template.vendor=Yocto Project +template.name=Hello World C CMake Project +template.description=A simple C hello world project based on CMake + +# General Settings +general.name=General settings +general.description=Author properties of the project +general.author.name=Author +general.author.description=The author of the project +general.author.default=anonymous +general.email.name=Email address +general.email.description=The email address of the project's author +general.email.default=an...@mo.us +general.vendor.name=Vendor +general.vendor.description=The vendor of the project +general.vendor.default=None +general.projectVersion.name=Version +general.projectVersion.description=The version of the project +general.projectVersion.default=1.0.0 diff --git a/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/template.xml b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/template.xml new file mode 100644 index 0000000..7c3774e --- /dev/null +++ b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCCMakeProject/template.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<template type="ProjTempl" + version="1.0" supplier="%template.vendor" revision="1.0" author="Atanas Gegov" + id="org.yocto.cmake.template.exe.helloWorldCCMakeProject" label="%template.name" + description="%template.description"> + + <property-group id="general_settings" label="%general.name" + description="%general.description" type="PAGES-ONLY"> + <property id="author" label="%general.author.name" description="%general.author.description" + default="%general.author.default" type="input" hidden="false" mandatory="false" + persist="true" /> + + <property id="email" label="%general.email.name" + description="%general.email.description" default="%general.email.default" + type="input" hidden="false" mandatory="false" persist="true" /> + + <property id="vendor" label="%general.vendor.name" + description="%general.vendor.description" default="%general.vendor.default" + type="input" hidden="false" mandatory="false" persist="true" /> + + <property id="projectVersion" label="%general.projectVersion.name" + description="%general.projectVersion.description" checkproject="false" + default="%general.projectVersion.default" type="input" + pattern="([0-9]\.){2}[0-9]" hidden="false" mandatory="false" persist="true" /> + </property-group> + + <process type="org.yocto.sdk.ide.NewYoctoProject"> + <simple name="name" value="$(projectName)" /> + <simple name="artifactExtension" value="exe" /> + <simple name="isCProject" value="true" /> + <simple name="isEmptyProject" value="false" /> + <simple name="isAutotoolsProject" value="false" /> + <simple name="isCMakeProject" value="true" /> + </process> + + <process type="org.eclipse.cdt.core.CreateSourceFolder"> + <simple name="projectName" value="$(projectName)" /> + <simple name="path" value="src" /> + </process> + + <process type="org.eclipse.cdt.managedbuilder.core.CreateIncludeFolder"> + <simple name="projectName" value="$(projectName)" /> + <simple name="path" value="inc" /> + </process> + + <process type="org.eclipse.cdt.core.AddFiles"> + <simple name="projectName" value="$(projectName)" /> + <complex-array name="files"> + <element> + <simple name="source" value="src/main.c" /> + <simple name="target" value="src/main.c" /> + <simple name="replaceable" value="true" /> + </element> + <element> + <simple name="source" value="src/CMakeLists.txt" /> + <simple name="target" value="CMakeLists.txt" /> + <simple name="replaceable" value="true" /> + </element> + </complex-array> + </process> +</template> diff --git a/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/src/CMakeLists.txt b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/src/CMakeLists.txt new file mode 100644 index 0000000..0436959 --- /dev/null +++ b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/src/CMakeLists.txt @@ -0,0 +1,34 @@ +cmake_minimum_required (VERSION 2.8.1) + +######## Project settings ######## +PROJECT($(projectName)) +SET(LICENSE "TBD") + +######## Build and include settings ######## +include_directories( + inc +) + +link_directories( + ${LINK_DIRECTORIES} +) + + +file(GLOB SOURCES + "src/*.cpp" +) + +add_executable( + $(projectName) + + ${SOURCES} +) + +TARGET_LINK_LIBRARIES( + $(projectName) +) + +######## Install targets ######## +INSTALL(TARGETS $(projectName) + RUNTIME DESTINATION usr/bin +) diff --git a/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/src/main.cpp b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/src/main.cpp new file mode 100644 index 0000000..78b4e23 --- /dev/null +++ b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/src/main.cpp @@ -0,0 +1,21 @@ +/** @mainpage $(projectName) - $(vendor) + * + * @author $(author) <$(email)> + * @version $(projectVersion) +**/ + + +#include <stdio.h> +/** + * Main class of project $(projectName) + * + * @param argc the number of arguments + * @param argv the arguments from the commandline + * @returns exit code of the application + */ +int main(int argc, char **argv) { + // print a greeting to the console + printf("Hello World!\n"); + + return 0; +} diff --git a/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/template.properties b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/template.properties new file mode 100644 index 0000000..99e7047 --- /dev/null +++ b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/template.properties @@ -0,0 +1,31 @@ +#/******************************************************************************* +# * Copyright (c) 2013 BMW Car IT GmbH. +# * All rights reserved. This program and the accompanying materials +# * are made available under the terms of the Eclipse Public License v1.0 +# * which accompanies this distribution, and is available at +# * http://www.eclipse.org/legal/epl-v10.html +# * +# * Contributors: +# * BMW Car IT - initial implementation +# *******************************************************************************/ + +# Template +template.vendor=Yocto Project +template.name=Hello World C++ CMake Project +template.description=A simple C++ hello world project based on CMake + +# General Settings +general.name=General settings +general.description=Author properties of the project +general.author.name=Author +general.author.description=The author of the project +general.author.default=anonymous +general.email.name=Email address +general.email.description=The email address of the project's author +general.email.default=an...@mo.us +general.vendor.name=Vendor +general.vendor.description=The vendor of the project +general.vendor.default=None +general.projectVersion.name=Version +general.projectVersion.description=The version of the project +general.projectVersion.default=1.0.0 diff --git a/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/template.xml b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/template.xml new file mode 100644 index 0000000..a664d8a --- /dev/null +++ b/plugins/org.yocto.cmake.managedbuilder/templates/projecttemplates/HelloWorldCPPCMakeProject/template.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<template type="ProjTempl" + version="1.0" supplier="%template.vendor" revision="1.0" author="Atanas Gegov" + id="org.yocto.cmake.template.exe.helloWorldCPPCMakeProject" label="%template.name" + description="%template.description"> + + <property-group id="general_settings" label="%general.name" + description="%general.description" type="PAGES-ONLY"> + <property id="author" label="%general.author.name" description="%general.author.description" + default="%general.author.default" type="input" hidden="false" mandatory="false" + persist="true" /> + + <property id="email" label="%general.email.name" + description="%general.email.description" default="%general.email.default" + type="input" hidden="false" mandatory="false" persist="true" /> + + <property id="vendor" label="%general.vendor.name" + description="%general.vendor.description" default="%general.vendor.default" + type="input" hidden="false" mandatory="false" persist="true" /> + + <property id="projectVersion" label="%general.projectVersion.name" + description="%general.projectVersion.description" checkproject="false" + default="%general.projectVersion.default" type="input" + pattern="([0-9]\.){2}[0-9]" hidden="false" mandatory="false" persist="true" /> + </property-group> + + <process type="org.yocto.sdk.ide.NewYoctoProject"> + <simple name="name" value="$(projectName)" /> + <simple name="artifactExtension" value="exe" /> + <simple name="isCProject" value="false" /> + <simple name="isEmptyProject" value="false" /> + <simple name="isAutotoolsProject" value="false" /> + <simple name="isCMakeProject" value="true" /> + </process> + + <process type="org.eclipse.cdt.core.CreateSourceFolder"> + <simple name="projectName" value="$(projectName)" /> + <simple name="path" value="src" /> + </process> + + <process type="org.eclipse.cdt.managedbuilder.core.CreateIncludeFolder"> + <simple name="projectName" value="$(projectName)" /> + <simple name="path" value="inc" /> + </process> + + <process type="org.eclipse.cdt.core.AddFiles"> + <simple name="projectName" value="$(projectName)" /> + <complex-array name="files"> + <element> + <simple name="source" value="src/main.cpp" /> + <simple name="target" value="src/main.cpp" /> + <simple name="replaceable" value="true" /> + </element> + <element> + <simple name="source" value="src/CMakeLists.txt" /> + <simple name="target" value="CMakeLists.txt" /> + <simple name="replaceable" value="true" /> + </element> + </complex-array> + </process> +</template> -- 1.7.9.5 _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto