cmake:为不存在的源预生成Makefile

时间:2013-11-11 03:48:02

标签: makefile cmake

我的程序生成需要编译成动态库的c ++代码。 代码是在某个目录中生成的,在生成Makefile之前它的名称是未知的(目录是在运行时创建的),但是库所依赖的文件的名称是预定义的(src1.cpp,src2.cpp ..) 。 有没有办法使用cmake生成Makefile,以便可以将其复制到包含需要编译的库源的目录中。 我试过add_library,它依赖于src1.cpp src2.cpp ..但是cmake不希望在没有源代码的情况下生成Makefile。

1 个答案:

答案 0 :(得分:3)

我不确定我是否完全理解您的用例,但我认为您可以为每个不存在的文件将GENERATED属性设置为TRUE以解决此问题。例如说你的文件列表是MyFiles,你可以使用set_source_files_properties

set_source_files_properties(${MyFiles} PROPERTIES GENERATED TRUE)

您可能还必须创建依赖项以确保在尝试构建库之前实际存在这些文件(例如,如果它们是由脚本生成的,则使用{{将该脚本作为库的预构建命令调用) 3}})。