cmake的编译蟒蛇到build文件夹(Cmake compiling python into bu

2019-07-31 08:58发布

我认为,一个例子是证明我的问题的最佳方式:

可以说我有一个名为src的源目录。 此目录下有两个文件,一个文件的CMakeLists.txt和一个名为等等Python文件。 在SRC存储在同一个地方,有一个名为build文件夹。 现在,我想能够运行cmake并使其编译我的Python文件等等,并把它变成我的build目录。 目前,我的CMakeLists.txt只是复制未编译代码,直入我的生成目录使用呼叫:

CONFIGURE_FILE(${PATH_TO_SOURCE}/blah.py ${PATH_TO_BUILD}/blah.py COPYONLY)

然后,我让运行在终端编译实际的文件。 这使得未编译Python文件在我的生成目录,这是没有好处的。 我已经使用ADD_EXECUTABLES,创建一个自定义的目标,并使用COMMAND试过,但我的语法必须某处关闭。 任何帮助将不胜感激!

Answer 1:

CMake的不支持Python的开箱即用的,据我所知。 正因为如此,你需要编写规则来构建Python的文件,这样的事情:

macro(add_python_target tgt)
  foreach(file ${ARGN})
    set(OUT ${CMAKE_CURRENT_BINARY_DIR}/${file}.pyo)
    list(APPEND OUT_FILES ${OUT})
    add_custom_command(OUTPUT ${OUT}
        COMMAND <python command you use to byte-compile .py file>)
  endforeach()

  add_custom_target(${tgt} ALL DEPENDS ${OUT_FILES})
endmacro()

定义后,就可以使用这种方式:

add_python_target(blabla blah.py)

如果你想adjustmenets或需要了解更多信息,请参阅CMake的文档 。



文章来源: Cmake compiling python into build folder