有没有办法强制CMAKE选择源形成当前构建文件夹,如果文件可用,否则从源目录中获取它?
我的项目有以下结构:
ROOT/lib/a.cpp
/BUILD
BUILD文件夹是我运行cmake ..
的地方。我有一个可选的自定义目标,可生成源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)
(省略了自定义规则)。
答案 0 :(得分:0)
您可以使用生成文件的完整路径:
add_library(test ${CMAKE_CURRENT_BINARY_DIR}/a.cpp)
如果文件不存在,将执行您的自定义命令以生成它。
确保生成的文件由add_custom_command()
而不是add_custom_target()
生成。