Правильно ссылается на исполняемый файл на протобаффер.CMake различия между ссылками, когда цель является библиотекой, и исполняемым
protobuf_generate_cpp(proto_srcs proto_hdrs simple.proto
add_executable(executable a.cc "${proto_srcs}")
target_link_libraries(executable "${PROTOBUF_LIBRARIES}")
Неправильная ссылка библиотек.
protobuf_generate_cpp(proto_srcs proto_hdrs simple.proto
add_library(proto_lib "${proto_srcs}")
target_link_libraries(proto_lib "${PROTOBUF_LIBRARIES}")
...
target_link_libraries(some_executable proto_lib)
Проблема заключается в обработке отладочных и оптимизированных библиотек. В первом случае это правильно обрабатывается, а во втором - для ссылки на строку debug/optimized library.
ld: library not found for -loptimized;/usr/local/lib/libprotobuf.dylib;debug;/usr/local/lib/libprotobuf.dylib
Я пытался играть с цитируемость аргументов и изменение типа библиотеки создается, но я в недоумении. Кто-нибудь знает, что я делаю неправильно?
Спасибо, думал, что я это пробовал. Мне любопытно, есть ли какая-либо причина, рассматривающая библиотеки, поскольку строка будет работать с исполняемой мишенью, но не с целевой библиотекой? Я могу догадаться, что в библиотеке он рассматривает это как имя цели cmake, если это строка, где, как и в исполняемом файле, она распознает «особый» характер строки, но это довольно дикое предположение. – jrock