1

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

4

1 回答 1

4

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

set_source_files_properties(${MyFiles} PROPERTIES GENERATED TRUE)

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

于 2013-11-11T09:17:33.050 回答