首页 > 解决方案 > 如何在 CMAKEList 中执行外部批处理文件

问题描述

假设 - 我有一个 Generator.bat 文件,它将生成 .cpp / .hpp 文件

我需要写一个 CMakeList.txt

1.我有几个Java文件(A.java和B.Java)2.如果任何Java文件发生变化,那么我们需要执行Generator.bat并重新生成A.cpp和B.cpp和A。 hpp 和 B.hpp 文件

  1. 我需要从生成的 A.cpp 和 B.cpp 和 C.cpp (用户定义的)和 D.cpp (用户定义的)生成目标 DLL

  2. 我们需要生成目标 DLL A) 如果任何用户定义的 .cpp 文件说 D.cpp B) 如果任何 .java 文件发生变化。然后执行步骤 2 并重新生成 .DLL

标签: cmake

解决方案


You can use add_custom_command to teach CMake how to generate your files:

add_custom_command(OUTPUT A.cpp A.hpp B.cpp B.hpp
                   DEPENDS A.java B.java
                   COMMAND generator.bat)

add_library(target SHARED A.cpp B.cpp C.cpp D.cpp)

You could have the library depend on A.hpp and B.hpp as well, but you said generator.bat regenerates them anyway, so that should not be needed...


推荐阅读