如何使用 Makefile 使用 VTK 库编译项目?



出于这个原因,我下载了C++库VTK,并在OSX环境的build子目录中进行了本地构建。

我想使用这个库编译一个项目(特别是我正在使用类vtkSmartPointer(与Makefile.

例如,请考虑以下源代码:

#include<iostream>
#include<vtkSmartPointer.h>
#include<vtkCallbackCommand.h>
int main()
{
vtkSmartPointer<vtkCallbackCommand> keypressCallback =
vtkSmartPointer<vtkCallbackCommand>::New();
std::cout<<"hello worldn";
return 0;
}

对于Makefile,我从这篇文章中的第二个答案开始,我添加了 VTK 库路径:

CXX = g++
# OpenCV trunk
CXXFLAGS = -std=c++11 
-I ../VTK/Common/Core/ -I ../VTK/build/Common/Core/ -I ../VTK/build/Utilities/KWIML/ 
-I ../VTK/Utilities/KWIML/ 
-L../VTK/build/lib 
-lvtkCommon -lvtkFiltering -lvtkImaging -lvtkGraphics -lvtkGenericFiltering -lvtkIO
SOURCES := $(wildcard *.cpp)
OBJECTS := $(patsubst %.cpp,%.o,$(SOURCES))
DEPENDS := $(patsubst %.cpp,%.d,$(SOURCES))
# ADD MORE WARNINGS!
WARNING := -Wall -Wextra
# .PHONY means these rules get executed even if
# files of those names exist.
.PHONY: all clean
# The first rule is the default, ie. "make",
# "make all" and "make parking" mean the same
all: parking
clean:
$(RM) $(OBJECTS) $(DEPENDS) parking
# Linking the executable from the object files
parking: $(OBJECTS)
$(CXX) $(WARNING) $(CXXFLAGS) $^ -o $@
-include $(DEPENDS)
%.o: %.cpp Makefile
$(CXX) $(WARNING) $(CXXFLAGS) -MMD -MP -c $< -o $@

我的环境变量DYLD_LIBRARY_PATH的值为../cmake_bin_dir/instDir/lib:../VTK/build/lib/

当我尝试编译正在运行的make时,出现以下错误:

ld: library not found for -lvtkCommon
clang: error: linker command failed with exit code 1 (use -v to see invocation)

生成文件或程序中的哪个部分或过程中的步骤不正确?

提前谢谢你。

当前的 VTK 库不包含libVtkCommon.so(请参阅软件包内容部分 https://www.archlinux.org/packages/community/x86_64/vtk/(。你在寻找libVtkCommonCore.so吗?如果是这种情况,您必须在 Makefile 中将-lvtkCommon更改为-lvtkCommonCore。其他一些包含的库似乎也是如此。

最新更新