#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 Это звучит лучше, я думаю, я попробую! Спасибо!