微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 CMake 中构建时运行 python 脚本,不需要依赖项

如何解决在 CMake 中构建时运行 python 脚本,不需要依赖项

我有一个 python 脚本 h2py.py,可以将头文件 .hpp 转换为 .py 文件

我希望每次使用 CMake 构建项目时都运行此 python 脚本。 没有其他项目或文件依赖于脚本生成文件

到目前为止,我已经尝试过:

find_package(PythonInterp required)

add_custom_target(
 run ALL
 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/include/converter/h2py.py ${CMAKE_CURRENT_SOURCE_DIR}/include/converter/
 COMMENT "Converting .hpp file to .py file"
)

add_dependencies(converter run)

但这不会生成 .hpp 文件的 .py 等效文件(在脚本中指定)

EDIT :当我在终端中运行 python 脚本 h2py.py 时,它会生成 .hpp 文件的 .py 等效文件,正如预期的那样。但是当我运行 CMake 文件时它不会生成 .py 文件

这是整个 CMake 文件

cmake_minimum_required(VERSION 2.8.3)
project(converter)

set(CMAKE_BUILD_TYPE release)
add_compile_options(-std=c++11)

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin required COMPONENTS xyz)
## is used,also find other catkin packages
find_package(catkin required
    roscpp
    geometry_msgs
    eigen_conversions
    std_msgs
    tf_conversions
    tf
    genmsg
    message_generation
    sensor_msgs
    rospy
    gazebo_msgs
)

catkin_package(
    #DEPENDS Eigen libpcl-all-dev gnuplot
    CATKIN_DEPENDS roscpp sensor_msgs tf_conversions tf geometry_msgs message_generation
    INCLUDE_Dirs include
    LIBRARIES ${PROJECT_NAME}
    )
###########
## Build ##
###########

## Specify additional locations of header fils
## Your package locations should be listed before other locations
include_directories(
 include
 ${catkin_INCLUDE_Dirs}
)

## Declare a C++ library
 add_library(${PROJECT_NAME}
   src/${PROJECT_NAME}/motion_covariance.cpp
   src/${PROJECT_NAME}/tf_utils.cpp
 )

target_link_libraries(${PROJECT_NAME}  ${catkin_LIBRARIES}  ${Boost_LIBRARIES}  )

find_package(PythonInterp required)

add_custom_target(
 run ALL
 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/include/converter/h2py.py ${CMAKE_CURRENT_SOURCE_DIR}/include/converter/
 COMMENT "Converting .hpp file to .py file"
)

add_dependencies(converter run)

解决方法

根据@Tsyvarev 的评论,通过将 WORKING_DIRECTORY 选项设置为 add_custom_command 解决了问题!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。