2015-04-06 80 views
0

有没有办法强制CMAKE选择来源形式当前生成文件夹如果文件是可用的,否则从源目录?如何从构建目录中选择源代码(如果可用)否则使用源代码目录?

我的项目结构如下:

ROOT/lib/a.cpp 
    /BUILD 

build文件夹是我跑cmake ..。我有一个可选的自定义目标,它会生成一个源文件BUILD/lib/a.cppcmake generate

我想在ROOT/lib中建立一个库,它会自动拾取生成的源文件BUILD/lib/a.cpp,否则使用ROOT/lib/a.cpp

该库通过以下方式与ROOT/lib/CMakeLists.txt生成:

add_library(test a.cpp) 

(省略了自定义规则)。

回答

0

你可以使用的完整路径生成的文件:

add_library(test ${CMAKE_CURRENT_BINARY_DIR}/a.cpp) 

,如果文件不存在,您的自定义指令被执行,以生成它。 请确保生成的文件由add_custom_command()生成,而不是由add_custom_target()生成。