我有一个测试(add_executable(MyTest ...)
),它在运行时需要一个文件。该文件是使用自定义命令生成的。我想在 CMake 中对运行时依赖项进行建模。
目前,使用where is a custom target对生成的文件存在构建时依赖关系,该目标依赖于自定义命令的输出。缺点:在构建完成之前不会开始编译代码。这是不必要的——我想并行构建和生成文件。add_dependencies(MyTest GenerateFile)
GenerateFile
MyTest
GenerateFile
MyTest
我考虑的另一个选择是添加一个新目标MyTestAndGenerateFile
,该目标同时依赖于MyTest
和GenerateFile
。缺点:调用make MyTest
不再生成文件。一个人必须记得打电话make MyTestAndGenerateFile
。
或者,可以调用新目标MyTest
并使用add_executable(MyTest_Code ...)
. 缺点:使用 Visual Studio 生成器时,测试代码现在将位于名为MyTest_Code
而不是的项目中MyTest
,这违反了命名约定。此外,您现在必须构建项目,MyTest
但运行项目,MyTest_Code
因此您不能再使用设置为启动项目。
简而言之,我正在寻找一种add_dependencies
说法,即在构建时不需要依赖项,而是在运行时需要。