Изменение выходного каталога библиотеки, созданной с помощью pybind11_add_module - PullRequest
0 голосов
/ 17 февраля 2020

Я использую CMake для создания некоторых python привязок для моего кода с использованием Pybind11. Это работает хорошо, но они компилируются в основном каталоге 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 -specifi c, а также о расширении файла c для OS и Python -version-Speci. Полученной целью можно далее управлять с помощью обычных команд CMake.

Поэтому я предположил, что set_target_properties может использоваться для указания другого выходного каталога после него, не так ли? Если нет, то как это можно сделать?

Заранее спасибо!

1 Ответ

2 голосов
/ 17 февраля 2020

pybind11 модуль - это библиотека типа SHARED или MODULE.

Каталог сборки для библиотек SHARED указывается через LIBRARY_OUTPUT_DIRECTORY на всех платформах, кроме Windows (и его dll ' s).

Каталог сборки для библиотек MODULE указывается через LIBRARY_OUTPUT_DIRECTORY на всех платформах без исключения.

Подробное описание типов выходных артефактов в CMake и соответствующих переменных OUTPUT можно найти в документации .

...