7

How to read file content into a variable in qmake project file? For example, I'd like to have the contents of KEY read from a file and pass it to the compiler:

DEFINES += KEY=**some magic and filename here**
Kuba hasn't forgotten Monica
  • 95,931
  • 16
  • 151
  • 313
Jacob
  • 1,335
  • 1
  • 14
  • 28

1 Answers1

10

On all platforms, there's a built-in replace function $$cat:

# set a qmake variable
KEY = "$$cat(/path/to/the/file)"
# propagate the variable to C/C++
DEFINES += "KEY=\"$$KEY\""

The effect of this line is the same as if you added the following line at the beginning of every translation unit (mostly a fancy name for a .cpp file):

#define KEY <contents of the file>

Suppose that the file contains a single line:

FOO

Then:

 // source
 qDebug() << KEY;
 // preprocessed source
 qDebug() << "FOO";
Kuba hasn't forgotten Monica
  • 95,931
  • 16
  • 151
  • 313
  • 1
    If KEY should be treated as a string by your C/C++ code, add single quotes: `DEFINES += "KEY='\"$$KEY\"'"` This avoids that the shell eats the double quotes, yielding some strange error messages about undefined variables or something similar. – z80crew Nov 27 '20 at 11:37