устанавливайте переменную cmake из пользовательской команды перед каждой сборкой

#cmake #command

#cmake #команда

Вопрос:

Как я могу запускать пользовательскую команду перед каждой сборкой и передавать результат в переменную cmake?

Я знаю, что могу сделать это, например, на терминале
cmake -DMY_VARIABLE=$(echo FOOBAR)

Но я хотел бы интегрировать это в свой CMakeLists.txt использование
add_custom_command(TARGET ${MY_APP} PRE_BUILD ...) .

Затем я хочу передать эту переменную в качестве определения компиляции. add_cmpile_definitions(MY_DEFINITION="${MY_VARIABLE}")

Я нашел нечто подобное в команде execute_process , которая имеет аргумент OUTPUT_VARIABLE , который сохраняет выходные данные команды в этой переменной. Но я думаю, что она не запускается перед каждой сборкой.

Комментарии:

1.Обратите внимание, что изменение переменной CMake подразумевает перенастройку проекта: cmake его необходимо запустить снова и создать Makefile проекта. То есть, если вы создаете свой проект с make помощью, то эффективно cmake -DMY_VARIABLE=$(echo FOOBAR) amp;amp; make создавать проект с измененной переменной. Это то, что вы хотите на самом деле?

2. @Tsyvarev Если я правильно понимаю, вы пытаетесь сказать, что мне придется каждый раз перенастраивать cmake. На самом деле это не то, чего я хочу… Я хочу запускать команду и передавать ее выходные данные в определение компиляции при каждом запуске make

3. «Я хочу запускать команду и передавать ее выходные данные в определение компиляции при каждом запуске make» — это невозможно, CMake генерирует Makefile с жестко заданными параметрами компилятора. Однако вы можете обернуть компилятор пользовательским скриптом или программой, которая добавляет необходимые параметры.

4. Возможно, создание файла заголовка, содержащего определение, может быть вариантом…

5. @fabian Это звучит лучше, я думаю, я попробую! Спасибо!