Я добавляю boost.python для моей игры.Я пишу обертки для своих классов, чтобы использовать их в сценариях.Проблема связана с привязкой этой библиотеки к моему приложению.Я использую cmake
build system.
Теперь у меня есть простое приложение с 1 файлом и makefile для него:
PYTHON = /usr/include/python2.7
BOOST_INC = /usr/include
BOOST_LIB = /usr/lib
TARGET = main
$(TARGET).so: $(TARGET).o
g++ -shared -Wl,--export-dynamic \
$(TARGET).o -L$(BOOST_LIB) -lboost_python \
-L/usr/lib/python2.7/config -lpython2.7 \
-o $(TARGET).so
$(TARGET).o: $(TARGET).cpp
g++ -I$(PYTHON) -I$(BOOST_INC) -c -fPIC $(TARGET).cpp
И это работает.Он создает для меня файл 'so', который я могу импортировать из python.
Теперь вопрос: как получить это для cmake?
Я написал в main CMakeList.txt
:
...
find_package(Boost COMPONENTS filesystem system date_time python REQUIRED)
message("Include dirs of boost: " ${Boost_INCLUDE_DIRS} )
message("Libs of boost: " ${Boost_LIBRARIES} )
include_directories(
${Boost_INCLUDE_DIRS}
...
)
target_link_libraries(Themisto
${Boost_LIBRARIES}
...
)
...
message
Показ вызовов:
Include dirs of boost: /usr/include
Libs of boost: /usr/lib/libboost_filesystem-mt.a/usr/lib/libboost_system-mt.a/usr/lib/libboost_date_time-mt.a/usr/lib/libboost_python-mt.a
Хорошо, поэтому я добавил простой .cpp-файл для моего проекта с включением <boost/python.hpp>
.Я получаю сообщение об ошибке при компиляции:
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory
Так что не нужно все включать каталоги.
И секунда вопрос:
Какорганизовать двухэтапное построение файлов script-cpp?В makefile, который я показал, есть TARGET.o и TARGET.so , как обрабатывать эти 2 команды в cmake?
Как я понимаю, лучший способ этосоздайте подпроект и сделайте что-нибудь там.
Спасибо.