CMake: доступ к переменным из файла BuildSetup.cmake - PullRequest
1 голос
/ 23 февраля 2012

Я пытаюсь контролировать поток моей программы, основываясь на значении переменной cmake с именем CMAKE_SIZEOF_VOID_P.

Для начала я хотел просто посмотреть, какое значение принимает эта переменная в разных конфигурациях, введя следующую команду в моем файле cmakelists.txt:

message(${CMAKE_SIZEOF_VOID_P})

Это отлично работает. Однако всякий раз, когда я пытаюсь выполнить указанную выше команду в своем файле BuildSetup.cmake, я не получаю никакого значения, возвращаемого мне (он просто выдает ошибку).

Важно, чтобы я мог получить доступ к значению этой переменной в моем файле BuildSetup.cmake, поскольку это поможет мне решить, какие флаги и другие параметры передать в компилятор.

Все, что мне действительно нужно, это способ определить, выполняет ли cmake компиляцию x64 или 32-битную компиляцию, поэтому, если есть какая-либо другая переменная (кроме этой, поскольку она не определена в файле BuildSetup.cmake), даст мне это, тогда это также будет работать для моих целей.

Любая помощь будет принята с благодарностью. Спасибо.

1 Ответ

2 голосов
/ 23 февраля 2012

Вы не можете использовать CMAKE_SIZEOF_VOID_P до тех пор, пока после не вызовете команду PROJECT() (я думаю, она установлена ​​во время фазы TRY_COMPILE выполнения PROJECT).

Поскольку вы вызываете BuildSetup.cmake, используя cmake -C, содержимое BuildSetup.cmake анализируется перед чем-либо в вашем основном CMakeLists.txt.

Однако вам, вероятно, не следует использовать файл конфигурации для определения того, какие флаги компилятора нужны CMake, они действительно принадлежат вашему CMakeLists.txt где-то после команды PROJECT().

...