У меня есть JSON-файл с конфигурацией среды базы данных, который называется env-config.json следующим образом:
{
"LATEST":{
"DB_DATABASE":"databasename",
"DB_HOST":"hosturl",
"DB_PORT":"3306",
"DB_USER":"root",
"POOL_MAX":1
},
"PROD":{
"DB_DATABASE":"databasename",
"DB_HOST":"hosturl",
"DB_PORT":"3306",
"DB_USER":"root",
"POOL_MAX":1
}
}
находится в корне исходного кода проекта c ++
, поэтому я хочупросто коснитесь этой конфигурации в формате json, но используйте ее из моего скомпилированного кода на C ++, например
, когда программа выполняет запрос к системе, что такое среда, например,
system.getEnvironment()
система говорит "PROD "
в этот момент вызовите этот файл JSON и извлеките информацию для использования в программе.
проблема в том, что мне нужен метод для распространения json вместе с конечным исполняемым файлом iне может иметь двоичный файл и файл json в отдельных файлах.
я пытаюсь с:
file (STRINGS "env-config.json" CONFIG)
add_definitions (-DENV_CONFIG=${CONFIG})
и после этого использую эту строку в программе, но проблема в том, что происходит сбой cmake, потому чтовсе scapes из json, да, я могу поместить json в строковый формат с большим количеством \ n и scapes, но я потеряю формат json с готовностью читаем.
Так что, например, возможно иметь мой файл json intact в формате json и во время сборки cmake преобразует его в строку и после этого использует
file (STRINGS "env-config.json" CONFIG)
add_definitions (-DENV_CONFIG=${CONFIG})
или, если это так сложно, потому что формат JSON
можно использовать файл свойств, такой как java
db - $ {env} .properties
с этим содержимым
db.database.name = mydatabasename
db.database.url = myurl
db.database.user = root
db.database.password = root
и включите его вместе в исполняемый файл, как в MAP внутри класса config или struct
Большое спасибо!