我有一个非常奇怪的问题:如何让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可以为我做得更好:
不幸的是它找到了3.5,而我需要2.7
相关问题 更多 >
编程相关推荐