gpt4 book ai didi

python - CMake 3.5中的链接器标志位置

转载 作者:行者123 更新时间:2023-12-02 10:06:42 38 4
gpt4 key购买 nike

我有一个很奇怪的问题:如何使CMake 3.5在文件后放置链接器标志?
我正在尝试编译一个调用Python脚本的C++。我的CMakeList.cpp中有这两行:

add_executable           (Python_trivium PyCall.cpp) 
set_target_properties (Python_trivium PROPERTIES COMPILE_FLAGS "${PYTHON_CFLAGS}" Python_trivium PRIVATE "${PYTHON_LDFLAGS}")

这将产生链接错误。通过“make VERBOSE = 1”,我可以看到链接器命令如下:
/usr/bin/c++     -L/usr/lib/python2.7/config-x86_64-linux-gnu -L/usr/lib -lpython2.7 -lpthread -ldl  -lutil -lm  -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions CMakeFiles/Python_trivium.dir/PyCall.cpp.o  -o Python_trivium 

文件之前标志的位置。我从Python.h中收到每个命令的“ undefined reference ”错误,例如
/home/portolan/emanuele/MAST_project/pyhelper.hpp:12: undefined reference to `Py_Initialize'

如果我在文件后反转并放置标志,则一切正常:
/usr/bin/c++   CMakeFiles/Python_trivium.dir/PyCall.cpp.o  -o Python_trivium   -L/usr/lib/python2.7/config-x86_64-linux-gnu -L/usr/lib -lpython2.7 -lpthread -ldl  -lutil -lm  -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions 

有没有办法要求CMake这样格式化链接器命令行?

谢谢,
米歇尔

最佳答案

我发现我的错误是尝试手动执行。 CMake可以为我做得更好:

find_package(PythonLibs REQUIRED)
include_directories(${PYTHON_INCLUDE_DIRS})
message("PYTHONLIBS_VERSION_STRING: ${PYTHONLIBS_VERSION_STRING}")

不幸的是它找到3.5,而我需要2.7 ....

关于python - CMake 3.5中的链接器标志位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59898509/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com