2017-09-26 105 views
2

我有一个项目,如果用户想要,您可以或不可以构建GUI。这是一个可选的图书馆。构建可选库时的Cmake配置文件

我正在尝试创建一个Cmake配置文件进行安装,我不知道是否有任何聪明的方法可以知道这一点,并为它调整文件。现在我有:

set(MYPROG_INCLUDE_DIRS @[email protected]/include/myprog) 

foreach(lib feature geometry gui sensors sensorstream utils) 
    list(APPEND MYPROG_LIBRARIES @[email protected]/lib/libmyprog_${lib}.so) 
endforeach() 

但我建构的GUI的那一刻,这个文件是给MYPROG_LIBRARY向桂联还,即使它没有建立。我想过分隔两个作为:

set(MYPROG_INCLUDE_DIRS @[email protected]/include/myprog) 

foreach(lib feature geometry sensors sensorstream utils) 
    list(APPEND MYPROG_LIBRARIES @[email protected]/lib/libmyprog_${lib}.so) 
endforeach() 

set(MYPROG_LIBRARIES_GUI [email protected]/lib/libmyprog_gui.so) 

但我现在有不同的呼叫做的就是所有的图书馆,如果我建的GUI。

在我的Cmake中,我将BUILD_GUI设置为0,如果我无法构建GUI。有什么方法可以使用它?

回答

2

你可以建立你的组件列表,然后把它放到配置文件:

set(COMPONENTS lib feature geometry sensors sensorstream utils) 
if(BUILD_GUI) 
    list(APPEND COMPONENTS gui) 
endif() 

而且在配置文件中

foreach(lib @[email protected]) 
    list(APPEND MYPROG_LIBRARIES @[email protected]/lib/libmyprog_${lib}.so) 
endforeach() 
+0

大概应该是'的foreach(LIB @器件@)',是? – legalize

+0

对,固定,谢谢。 – arrowd