2014-01-22 2 views

ответ

1

Вы можете использовать set для замены значения переменной окружения, а обычным способом обнаружения 64-разрядной архитектуры является использование CMAKE_SIZEOF_VOID_P.

Так, например, чтобы добавить /x64 или /x86 на переменную окружения QtEnvVar, вы могли бы сделать:

cmake_minimum_required(VERSION 2.8 FATAL_ERROR) 
project(EnvVarSetter) 

message(STATUS "CMAKE_SIZEOF_VOID_P: ${CMAKE_SIZEOF_VOID_P}") 
message(STATUS "QtEnvVar before:  $ENV{QtEnvVar}") 
if(CMAKE_SIZEOF_VOID_P EQUAL 8) 
    set(ENV{QtEnvVar} "$ENV{QtEnvVar}/x64") 
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) 
    set(ENV{QtEnvVar} "$ENV{QtEnvVar}/x86") 
else() 
    message(FATAL_ERROR "Unknown void* size.") 
endif() 
message(STATUS "QtEnvVar after:  $ENV{QtEnvVar}") 
+0

я уже QtEnvVar заявил в мой компьютер, чтобы указать на «C:/Qt». Затем у меня есть два подкаталога: «x86» и «x64». Итак, я хотел бы обновить QtEnvVar до c:/Qt/x64, если обнаружена 64-битная архитектура или c:/Qt/x86, если 32-битная архитектура. Итак, я попробовал то, что вы предложили, но он, похоже, не перезаписывает QtEnvVar – thestar

+0

@Sunny Я обновил свой ответ, чтобы быть более конкретным для вашего прецедента. Если это все равно не поможет, вы, вероятно, лучше всего показать нам пример CMakeLists.txt, где у вас есть проблема. – Fraser

Смежные вопросы