我有一个需要使用API键的应用程序,我不想在源代码中持久化API密钥。我想在构建步骤(嵌入式linux的bitbake进程)期间将API密钥添加到应用程序中。API密钥将在bitbake中定义,并且只有有限的人可以访问服务器。
我不想使用由systemd设置的环境变量或其他类似的方法,最终可以从二进制文件的文本部分或服务文件中读取密钥。同样,这个问题的答案也被用于源代码修改信息,这些信息只能在构建时注入。
我建立了这样的MRE:
#include <iostream>
#include <stdio.h>
#ifndef API_KEY
#define API_KEY ""
#endif
int main(){
std::cout << "API key is:" << API_KEY << "\n";
return 0;
}QMake pro文件:
QT += core
TEMPLATE = app
DESTDIR = $${OUT_PWD}
TARGET = test-executable
SOURCES += main.cpp 在调用qmake时,我将如何重写API_KEY?我试过所有这些变体:
qmake DEFINES+=API_KEY=my_secrect_key
qmake DEFINES+=API_KEY="my_secrect_key"
qmake DEFINES+=API_KEY=\\"my_secrect_key\\"
qmake DEFINES+=API_KEY='my_secrect_key'
qmake DEFINES+='API_KEY=my_secrect_key'
qmake DEFINES+='API_KEY=\\"my_secrect_key\\"'所有这些都不起作用:
main.cpp:9:40: note: in expansion of macro ‘API_KEY’
9 | std::cout << "API key is:" << API_KEY << "\n";发布于 2021-09-24 19:55:49
不能在我手机上测试,但是
qmake DEFINES+=API_KEY=\\\\\\\"my_secrect_key\\\\\\\"应该能起作用。一个用于转义字符串,另两个用于qmake吃掉一对。并为调用qmake的shell加倍。
https://stackoverflow.com/questions/69320139
复制相似问题