У меня довольно странный вопрос: как заставить CMake 3.5 поставить флаги компоновщика ПОСЛЕ файлов? Я пытаюсь скомпилировать C ++, который вызывает Python скрипт. У меня есть две эти строки в моем 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, например
/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 отформатировать командную строку компоновщика таким образом?
Спасибо, Мишель