2017-08-19 51 views
2

我有一個定義的字符串 的問題,如果我在源代碼中的cmake作爲定義

static const QStringList g_arrGenersControllerCommonLibDefinitions(QString(U_LIBS).split(";")); 

我怎樣才能在cmake的規定,他寫信給一個變量 這樣

add_definitions(-DU_LIBS="${U_LIBS}") 

回答

0

我怎樣才能在指定的CMake

ŧ他的問題不在CMake而是在gcc中。當你通過CMake傳遞定義時,它不會轉義而到達gcc。您可以嘗試make VERBOSE=1來查看它。

這裏是一個解決方案:

cmake_minimum_required (VERSION 2.8) 

project (CMPD) 
find_package (Qt5Core REQUIRED) 

set (U_LIBS) 
set (U_LIBS "${U_LIBS}/usr/lib/libu.so") 
set (U_LIBS "${U_LIBS}\\\;/usr/lib/libu.so.0") 
set (U_LIBS "${U_LIBS}\\\;/usr/lib/libu.so.0.0") 
set (U_LIBS "${U_LIBS}\\\;/usr/lib/libu.so.0.0.0") 
add_definitions(-DU_LIBS="${U_LIBS}") 

add_executable (cmpd ${PROJECT_SOURCE_DIR}/main.cpp) 
target_link_libraries (cmpd Qt5::Core) 

輸出:

("/usr/lib/libu.so", "/usr/lib/libu.so.0", "/usr/lib/libu.so.0.0", "/usr/lib/libu.so.0.0.0") 

的源可用here