我正在为我的游戏添加 boost.python 。我为我的类编写包装器以在脚本中使用它们。问题在于将该库链接到我的应用程序。我在用着cmake
构建系统。
现在我有一个简单的应用程序,包含 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 获取这个?
我写在主要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
所以不需要所有需要的包含目录。
And second问题:
如何组织 script-cpp 文件的两步构建?在 makefile 中我展示了TARGET.o and 目标.so,如何在cmake中处理这2个命令?
据我了解,最好的方法是创建子项目并在那里做一些事情。
Thanks.