2016-02-26 84 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) 
相关问题