Концепция в CMake несколько отличается. Вы можете определить «переменные кэша» (в основном, переменные, которые запоминаются для последующих сборок в одном и том же каталоге компоновки, и могут быть настроены пользователями), которые поставляются со значениями по умолчанию и строками документации и т. Д. Затем их можно изменить либо путем передачи -D name:type=value
опций в cmake, либо с использованием одного из более дружественных интерфейсов (например, ccmake
, пользовательский интерфейс curses для CMake).
Пример основан на ваш вопрос:
SET(param 0 CACHE STRING "Test variable defaulting to '0'")
# ...
add_custom_target(run ./foo -r "\"fun(${param})\"")
Вы найдете более подробную информацию в исчерпывающих документы для CMake.
PS. это для переменных внутри CMake и конкретно CMakeLists.txt
; насколько я могу сказать, возможность изменить значение не переносится в сгенерированный Makefile. Я не уверен, что это возможно в первую очередь, потому что это, вероятно, не будет совместимо со всеми целями, поддерживаемыми CMake (например, проектами Visual Studio, а что нет). В любом случае, CMake, похоже, не был предназначен для генерации файлов сборки, используемых независимо от CMake.
Я не думаю, что это возможно, потому что CMake предназначен для использования с любым устройством системы сборки, и, например, то, что будет работать для 'make', не будет иметь смысла для' msvc'. Может быть какое-то кросс-платформенное решение, например, чтение переменной из файла? –