如何从构建目录中选择源(如果可用),否则使用源目录

How to pick source from build dir if available otherwise use source dir?

本文关键字:如果 选择 构建      更新时间:2023-10-16

如果文件可用,是否有方法强制CMAKE从当前构建文件夹中拾取源,否则从源目录中获取?

我的项目有以下结构:

ROOT/lib/a.cpp
    /BUILD

BUILD文件夹是我运行CCD_ 1的地方。我有一个可选的自定义目标,它生成一个源BUILD/lib/a.cpp文件:cmake generate

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

使用ROOT/lib/CMakeLists.txt以以下方式生成库:

add_library(test a.cpp)

(省略了自定义规则)。

您只需使用生成文件的完整路径:

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

若文件不存在,将执行您的自定义命令来生成它。确保生成的文件由add_custom_command()生成,而不是由add_custom_target()生成。

相关文章: