Я очень новичок во всем CMake. После this и this записей, теперь я хочу вызвать функцию MAXON внутри Python, используя pybind11. Что я сделал до сих пор:
wget https://www.maxongroup.com/medias/sys_master/root/8837358518302/EPOS-Linux-Library-En.zip
unzip EPOS-Linux-Library-En.zip
- сделать исполняемый скрипт оболочки установки и запустить его:
chmod +x ./install.sh
sudo ./install.sh
- Затем перейдем к папке с примером:
cd /opt/EposCmdLib_6.6.1.0/examples/HelloEposCmd/
- Теперь объединяем файлы
CMakeLists.txt
из здесь :
# CMakeLists.txt
cmake_minimum_required(VERSION 2.8.12)
project (HelloEposCmd)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
find_package(pybind11 REQUIRED)
pybind11_add_module(${PROJECT_NAME} HelloEposCmd.cpp)
add_executable(${PROJECT_NAME} HelloEposCmd.cpp)
target_link_libraries(${PROJECT_NAME} -lEposCmd)
- и
HelloEposCmd.cpp
эта строка добавляется сразу после других заголовочных файлов:
#include <pybind11/pybind11.h>
основная функция переименована в:
int run(int argc, char** argv)
и синтаксис pybind11 для добавления модуля написан в конце:
PYBIND11_MODULE(HelloEposCmd, m) {
m.def("run", &run, "runs the HelloEposCmd");
}
Однако, когда я запускаю cmake .
, я получаю ошибку:
CMake Ошибка в CMakeLists.txt: 13 (add_executable):
add_executable не может создать цель "HelloEposCmd", поскольку другая цель с таким именем уже существует. Существующей целью является библиотека модулей, созданная в исходном каталоге "/opt/EposCmdLib_6.6.1.0/examples/HelloEposCmd" Подробнее см. Документацию по политике CMP0002.
...
Мне было интересно, не могли бы вы помочь мне получить правильный файл CMakeList.txt
. В идеале я должен иметь возможность вызывать скомпилированный модуль в python:
# HelloEposCmd.py
import HelloEposCmd
HelloEposCmd.run()
Спасибо за вашу поддержку заранее.