Saturday, April 21st 2018, 3:09pm UTC+2

You are not logged in.

  • Login
  • Register

Dear visitor, welcome to SEGGER Forum. If this is your first visit here, please read the Help. It explains how this page works. You must be registered before you can use all the page's features. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

jhendrix

Beginner

Date of registration: Oct 31st 2017

Posts: 4

1

Wednesday, January 10th 2018, 5:58pm

[SOLVED] EMBuild -D option

Does the -D option to EMBuild make the macro visible to the precompiler while my project is being built?I'm trying to automate a build of my SES project for a Nordic nRF52 processor on a custom board. I can build the project from the command line using EMBuild. I'm adding a -D APP_VER="b92662f" option to the command. But this doesn't appear to take effect in my code.

Here's my call:
embuild -config "Release" -D APP_VER="b92662f" E:\corp\Code\buildDir\app\app.emProject


Here's the code in my project. When building using embuild as called above, I would expect APP_VER to be defined as "b92662f":

#ifndef APP_VER
#define APP_VER "DVLPMNT"
#endif

Thanks.

SEGGER - Nino

Super Moderator

Date of registration: Jan 2nd 2017

Posts: 938

2

Thursday, January 25th 2018, 3:56pm

Hello,

Thank you for your inquiry.
The -D option will only create a project macro. To make it visible to your application you need to add it under "Preprocessor Definitions" as well.
You can find that entry in the project settings under Preprocessor-> Preprocessor Definitions.

When you mark that entry you will also get a short description of the functionality.
Does that solve the issue?

Best regards,
Nino
Please read the forum rules before posting: Forum Rules

Keep in mind, this is not a support forum. Its main purposes is user to user interaction.
Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
Should you be entitled to support contact us per e-mail.
The following contact form can be used for this: https://www.segger.com/about-us/contact-us/


jhendrix

Beginner

Date of registration: Oct 31st 2017

Posts: 4

3

Thursday, February 1st 2018, 4:51am

Hi NINO - that doesn't solve my problem exactly. I'm trying to inject the pre-proc define in at build time, from the command line script. I think what you describe is a change to the emProject file from the command line or the GUI.

If I can add a preprocessor definition into the call to EMBuild, that would work.

In the meantime, I'm working around it by modifying a project source file. There are those who object to the idea of pulling the code from source control, then modifying it before build. I don't know if injecting a pre-proc define from the command line is that much different, anyway.

The big picture is that I'm trying to automate the build and build the version control commit ID into the app.

SEGGER - Johannes

Super Moderator

Date of registration: Aug 31st 2012

Posts: 377

4

Thursday, February 1st 2018, 10:00am

Hi,

With emBuild it is not possible to add preprocessor definitions, you can only modify them.
But that seems to be what you will need.

In the project options preprocessor definitions add APP_VER=$(EXT_APP_VER)
and then call embuild -config "Release" -D EXT_APP_VER="b92662f" E:\corp\Code\buildDir\app\app.emProject
That will resolve $(EXT_APP_VER) to "b92662f" and you can use it through APP_VER in your application.

Regards
Johannes