我正在尝试使用Python脚本为C ++代码生成一些头文件和源文件,并将它们移动到适当的源目录,因为后续的C ++构建需要它们。
这是我当前代码的迭代形式:
# Generate the Parameters and ParamParser files.
add_custom_command(
OUTPUT include/waveparameters.h
include/waveparser.h
src/waveparser.cpp
DEPENDS ${PROJECT_SOURCE_DIR}/scripts/wave.json
COMMAND python3 ${CMAKE_SOURCE_DIR}/scripts/genParams.py ${CMAKE_CURRENT_SOURCE_DIR}/scripts/wave.json
COMMENT "Generating custom Parameters files"
VERBATIM USES_TERMINAL
)
add_custom_target(PAR_GENERATION
DEPENDS include/waveparameters.h
include/waveparser.h
src/waveparser.cpp
)
set(MULTIGRID_INCLUDE_FILES
include/waveparameters.h
include/firstorderwave.h
include/waveparser.h
)
set(MULTIGRID_SOURCE_FILES
src/multiGridTest.cpp
src/firstorderwave.cpp
src/waveparser.cpp
)
set(SOURCE_FILES ${MULTIGRID_INCLUDE_FILES} ${MULTIGRID_SOURCE_FILES})
add_executable(MultiGridTest ${SOURCE_FILES})
target_include_directories(MultiGridTest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_include_directories(MultiGridTest PRIVATE ${CMAKE_SOURCE_DIR}/include)
target_link_libraries(MultiGridTest oops ${EXTRA_LIBS} m)
当前的代码生成效果很好。
但是,无论我为输出指定哪个目录(包括${CMAKE_CURRENT_SOURCE_DIR}/include
或${CMAKE_SOURCE_DIR}/MultiGrid/include
和相关路径),生成的.h
和.cpp
文件始终移至二进制文件生成的目录中:
${CMAKE_SOURCE_DIR}/build/MultiGrid
而不是 :
${CMAKE_SOURCE_DIR}MultiGrid/include` and `${CMAKE_SOURCE_DIR}/MultiGrid/src
不久前,我在评论中使用了Tsyvarev的建议得出了结论。解决方案是将添加WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
为add_custom_command
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句