2016-02-26 87 views
0

我想將某些dll的文件複製到生成的二進制文件所在的Output文件夾中,並且某些dll的文件是Visual Studio版本特定的。我嘗試了類似於下面的模板,但它給了我錯誤。如何在cmake中使用INSTALL時使用if條件?

INSTALL(FILES 
    ../x.dll 
    ../y.dll 
    ../z.dll 
    IF(${CMAKE_GENERATOR} STREQUAL "Visual Studio 12 2013") 
     ../xyz.dll   
    ELSE() 
     ../xy.dll 
    ENDIF() 
    DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/Release) 

我在哪裏去了? (我是CMAKE的新手)

+1

在CMake **命令不能嵌套**。相反,一個命令可以設置一些變量,並且該變量可以在另一個命令中被取消引用。你需要閱讀有關CMake的手冊。 – Tsyvarev

+0

感謝您的建議,它有所幫助。 –

回答

0

我用下面的模板解決了我的問題。

IF(${CMAKE_GENERATOR} STREQUAL "Visual Studio 12 2013") 
    SET (VS_DEPENDENT_DLL ../xyz.dll) 
ELSE() 
    SET (VS_DEPENDENT_DLL ../xy.dll) 
ENDIF() 

INSTALL(FILES 
    ../x.dll 
    ../y.dll 
    ../z.dll 
    ${VS_DEPENDENT_DLL} 
    DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/Release) 
相關問題