Python 更改通过pybind11_add_模块创建的库的输出目录

Python 更改通过pybind11_add_模块创建的库的输出目录,python,cmake,pybind11,Python,Cmake,Pybind11,我正在使用CMake为使用Pybind11的代码构建一些python绑定。它工作得很好,但是它们在主build目录中编译。我希望它们构建在build\python目录下。我正在尝试以下方法: pybind11_add_module(myModule src/main.cpp) set_target_properties(myModule PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/python") 但是它没有按预期工作,my

我正在使用CMake为使用Pybind11的代码构建一些python绑定。它工作得很好,但是它们在主
build
目录中编译。我希望它们构建在
build\python
目录下。我正在尝试以下方法:

pybind11_add_module(myModule src/main.cpp)
set_target_properties(myModule PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/python")
但是它没有按预期工作,
myModule
仍然构建在
build
目录上,就好像没有调用
set\u target\u属性一样

在官方
pybind11\u add\u模块
文档中写道:

该函数的行为非常类似于CMake的内置add_库(实际上,它是围绕该命令的包装函数)。它将添加一个从列出的源文件生成的库目标。此外,它将处理所有特定于Python的编译器和链接器标志以及特定于OS和Python版本的文件扩展名。生成的目标可以使用常规的CMake命令进行进一步操作

所以我假设
set\u target\u properties
可以用来指示它后面的不同输出目录,不是这样吗?如果没有,如何做到这一点


提前谢谢你

pybind11
模块是共享或模块类型的库

在除Windows(及其
dll
)以外的所有平台上,通过
LIBRARY\u OUTPUT\u directory
指定共享库的生成目录

在所有平台上,模块库的生成目录都是通过
LIBRARY\u OUTPUT\u directory
指定的,没有例外


CMake中输出工件类型的详细说明以及相应的
output
变量可在Windows上
dll
库的.p>属性
RUNTIME\u output\u目录
影响中找到。对于
。因此
库您需要使用
库\u输出\u目录
属性。谢谢!!就是这样,真不敢相信我在文件里漏掉了。如果你想添加它作为一个答案,我会很高兴地标记为解决它!