2013-11-24 26 views
1

假设我有以下目录结构的项目:分组几个目标到一个单一的一个

project 
    src 
    file1.cpp 
    file2.cpp 
    CMakeLists.txt 
    demos 
    demo1.cpp 
    demo2.cpp 
    CMakeLists.txt 
    CMakeLists.txt 

在主CMakeLists.txt文件,我有以下行:

add_subdirectory(src) 
add_subdirectory(demos EXCLUDE_FROM_ALL) 

据我了解,用于demos目录的EXCLUDE_FROM_ALL参数具有仅显式构建它的效果。也就是说,建立两个目标demo1demo2,我需要执行:

make demo1 
make demo2 

我的问题是:有没有办法把所有这些demo1demo2指标纳入一个单一的demos目标,然后只需键入:

make demos 

在一个有数十个演示的项目中,明确地构建每个演示都是很烦人的。

回答

1

好的,找到解决方案!如果有其他人需要这种行为,我会在这里发帖。 唯一需要的是定义一个自定义目标如下:

# Add target "demos" for building the demos 
add_custom_target(demos 
    COMMAND ${CMAKE_BUILD_TOOL} 
    WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/demos") 
1

如果我没有记错的话,你可以去演示(cd演示)并在那里输入make来制作所有的演示目标。

+0

谢谢。我不知道这一点。不过,我认为有一种方法可以输入'make demos',而不用去'demos'目录。这个项目http://tinyurl.com/mahay35这样做。参见'make demo'。 – Allan