【发布时间】:2020-02-17 13:47:01
【问题描述】:
我正在使用 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_target_properties 没有被调用一样。
在官方pybind11_add_module 文档中是这样写的:
此函数的行为与 CMake 的内置 add_library 非常相似(实际上,它是该命令的包装函数)。它将添加一个名为从列出的源文件构建的库目标。此外,它将处理所有 Python 特定的编译器和链接器标志以及 OS 和 Python 版本特定的文件扩展名。生成的目标可以通过常规 CMake 命令进一步操作。
所以我假设set_target_properties可以用来表示它之后的不同输出目录,不是这样吗?如果没有,怎么办?
提前谢谢你!
【问题讨论】:
-
属性
RUNTIME_OUTPUT_DIRECTORY影响Windows 上的dll库。对于.so库,您需要使用LIBRARY_OUTPUT_DIRECTORY属性。 -
谢谢!!就是这样,不敢相信我在文档中错过了这一点。如果您想将其添加为答案,我很乐意将其标记为已解决!