我有一个项目,我想在其中使用 activemq 生产者,因此我想在我的 CMakeLists.txt 中添加 activemq 库。
以前,我使用的是 MakeFile,我有以下代码:
APR_INCLUDE=/usr/include/apr-1
CMS_HOME=$(HOME)/Tools/activemq-cpp-library-3.8.4
LD_LIBRARY_PATH:=/libs
obstacleDetection_cpp: src/obstacleDetection.cpp protoc_middleman
g++ -I $(APR_INCLUDE) -I $(CMS_HOME)/src/main -g -o src/obstacleDetection.o -c src/obstacleDetection.cpp
cd libs && cp $(CMS_HOME)/src/main/.libs/libactivemq-cpp.so.18.0.4 . && ln -sf libactivemq-cpp.so.18.0.4 libactivemq-cpp.so.18
g++ -L $(CMS_HOME)/src/main/.libs/ -g -o bin/obstacleDetection src/obstacleDetection.o src-gen/VisionData.pb.cc src-gen/VisionData.pb.h -lactivemq-cpp -lssl -L/usr/local/lib -lprotobuf -pthread
@echo "Success."
我将库路径设置为变量并在链接过程中引用它们。
然而,对于 CMakeLists,它并不是那么简单。我的 CMakeLists 中有以下部分,但它不起作用:
include_directories(
${catkin_INCLUDE_DIRS}
${OpenCV_INCLUDE_DIRS}
${PROTOBUF_INCLUDE_DIRS}
${CMAKE_CURRENT_BINARY_DIR}
include
~/Tools/activemq-cpp-3.8.4
/usr/include/apr-1
)
target_link_libraries(cameraSubscriber
${catkin_LIBRARIES}
${OpenCV_LIBRARIES}
${PROTOBUF_LIBRARIES}
filters
/usr/local/lib/libactivemq-cpp.a
/usr/lib/libapr-1.a
)
我收到以下错误:
fatal error: activemq/library/ActiveMQCPP.h: No such file or directory
compilation terminated.
有谁知道如何在 CMakeLists 中使用 activemq?或者任何人都知道如何将 Makefile 命令转换为 CMakeLists 命令?实际上我认为问题在于我无法链接库,那里的绝对路径对于 CMake 风格来说看起来不太好,我的意思是,我几乎可以肯定这不是给出这样的路径的方式。