我将 FLTK 从 1.1 更新到 1.3,然后我无法编译更新前运行良好的代码。
\n\n...\n [100%] Building CXX object CMakeFiles/PROSTVIEW.dir/include/nifti/vtkznzlib.cxx.o\n Linking CXX executable PROSTVIEW\n /usr/local/lib/libfltk.a(fl_font.cxx.o): In function `fontopen(char const*, int, bool, int)\':\n fl_font.cxx:(.text+0x298): undefined reference to `FcPatternCreate\'\n fl_font.cxx:(.text+0x362): undefined reference to `FcPatternAddString\'\n fl_font.cxx:(.text+0x3e3): undefined reference to `FcPatternAddString\'\n fl_font.cxx:(.text+0x3f7): undefined reference to `FcPatternAddInteger\'\n fl_font.cxx:(.text+0x40b): undefined reference to `FcPatternAddInteger\'\n fl_font.cxx:(.text+0x424): undefined reference to `FcPatternAddDouble\'\n fl_font.cxx:(.text+0x43c): undefined reference to `FcPatternAddString\'\n fl_font.cxx:(.text+0x4df): undefined reference to `FcMatrixRotate\'\n fl_font.cxx:(.text+0x4f7): undefined reference to `FcPatternAddMatrix\'\n fl_font.cxx:(.text+0x516): undefined reference to `FcPatternAddBool\'\n fl_font.cxx:(.text+0x52c): undefined reference to `FcPatternAddBool\'\n fl_font.cxx:(.text+0x549): undefined reference to `XftFontMatch\'\n fl_font.cxx:(.text+0x5a0): undefined reference to `XftFontOpen\'\n fl_font.cxx:(.text+0x5b0): undefined reference to `FcPatternDestroy\'\n fl_font.cxx:(.text+0x5f3): undefined reference to `XftFontOpenPattern\'\n fl_font.cxx:(.text+0x603): undefined reference to `FcPatternDestroy\'\n fl_font.cxx:(.text+0x659): undefined reference to `XftFontOpenXlfd\'\n /usr/local/lib/libfltk.a(fl_font.cxx.o): In function `utf8extents(Fl_Font_Descriptor*, char const*, int, _XGlyphInfo*)\':\n fl_font.cxx:(.text+0x84b): undefined reference to `XftTextExtents32\'\n /usr/local/lib/libfltk.a(fl_font.cxx.o): In function `fl_xft_width(Fl_Font_Descriptor*, unsigned int*, int)\':\n fl_font.cxx:(.text+0x98a): undefined reference to `XftTextExtents32\'\n /usr/local/lib/libfltk.a(fl_font.cxx.o): In function `fl_destroy_xft_draw(unsigned long)\':\n fl_font.cxx:(.text+0x102e): undefined reference to `XftDrawChange\'\n /usr/local/lib/libfltk.a(fl_font.cxx.o): In function `Fl_Xlib_Graphics_Driver::draw(char const*, int, int, int)\':\n fl_font.cxx:(.text+0x10c6): undefined reference to `XftDrawCreate\'\n fl_font.cxx:(.text+0x10f6): undefined reference to `XftDrawChange\'\n fl_font.cxx:(.text+0x1140): undefined reference to `XftDrawSetClip\'\n fl_font.cxx:(.text+0x1202): undefined reference to `XftDrawString32\'\n /usr/local/lib/libfltk.a(fl_font.cxx.o): In function `fl_drawUCS4(Fl_Graphics_Driver*, unsigned int const*, int, int, int)\':\n fl_font.cxx:(.text+0x1313): undefined reference to `XftDrawCreate\'\n fl_font.cxx:(.text+0x1343): undefined reference to `XftDrawChange\'\n fl_font.cxx:(.text+0x138d): undefined reference to `XftDrawSetClip\'\n fl_font.cxx:(.text+0x1433): undefined reference to `XftDrawString32\'\n /usr/local/lib/libfltk.a(fl_font.cxx.o): In function `Fl_Xlib_Graphics_Driver::rtl_draw(char const*, int, int, int)\':\n fl_font.cxx:(.text+0x1480): undefined reference to `FcUtf8Len\'\n fl_font.cxx:(.text+0x14ff): undefined reference to `FcUtf8ToUcs4\'\n collect2: ld returned 1 exit status\n make[2]: *** [PROSTVIEW] Error 1\n make[1]: *** [CMakeFiles/PROSTVIEW.dir/all] Error 2\n make: *** [all] Error 2\n
Run Code Online (Sandbox Code Playgroud)\n\n这是我的 CMakeLists.txt
\n\ncmake_minimum_required(VERSION 2.6)\n\nPROJECT(PROSTVIEW)\n\nSET(CMAKE_BUILD_TYPE DEBUG)\nSET(CMAKE_CXX__FLAGS -O3 -pipe -ffast-math -Wno-deprecated)\n\n# Chargement Package\n# FLTK\n FIND_PACKAGE ( FLTK )\n IF ( FLTK_FOUND )\n INCLUDE_DIRECTORIES( ${FLTK_INCLUDE_DIR} )\n ENDIF ( FLTK_FOUND )\n\n# ITK\nFIND_PACKAGE ( ITK )\nIF ( ITK_FOUND )\n INCLUDE( ${USE_ITK_FILE} )\nENDIF( ITK_FOUND ) \n\n# VTK\nFIND_PACKAGE ( VTK )\nIF ( VTK_FOUND )\n INCLUDE( ${USE_VTK_FILE} )\nENDIF( VTK_FOUND )\nSET(VTK_LIBRARIES vtkCommon vtkRendering vtkWidgets vtkGraphics vtkGenericFiltering vtkzlib)\n\n# vtkFlRenderWindowInteractor\nSET(VTKFL_INCLUDE_DIR "include/vtkfl")\nSET(VTKFL_CPP \n${VTKFL_INCLUDE_DIR}/vtkFlRenderWindowInteractor.cxx)\n\n# Auxiliary_Tools\nSET(AT_DIR "include/Auxiliary_Tools")\nSET(AT_INCLUDE_DIR ${AT_DIR}/include)\nSET(AT_LIBRARY_DIR ${AT_DIR}/lib)\n\n#Nifty\nSET(NII_DIR "include/nifti")\nSET(NII_SRC \n${NII_DIR}/vtkNIfTIReader.cxx\n${NII_DIR}/vtkNIfTIWriter.cxx\n${NII_DIR}/vtkAnalyzeReader.cxx\n${NII_DIR}/vtkAnalyzeWriter.cxx\n${NII_DIR}/vtknifti1_io.cxx\n${NII_DIR}/vtkznzlib.cxx)\n\n#Other include\nSET(PROSTVIEW_INCLUDE_DIR "include")\nSET(PROSTVIEW_SRC\n${PROSTVIEW_INCLUDE_DIR}/ContourTmt.cpp\n${PROSTVIEW_INCLUDE_DIR}/conversion.cpp \n${PROSTVIEW_INCLUDE_DIR}/TmtMatrix.cpp) \n\n# VOLUME Widget\nSET(VOLUME_WIDGET_DIR "include/GUI")\nSET(VOLUME_WIDGET \n${VOLUME_WIDGET_DIR}/VOLUME_Loader.cpp \n${VOLUME_WIDGET_DIR}/VOLUME_Widget.cpp \n${VOLUME_WIDGET_DIR}/VOLUME_Mouse_Widget.cpp \n${VOLUME_WIDGET_DIR}/VOLUME_3DView.cpp \n${VOLUME_WIDGET_DIR}/CONTOUR_Loader.cpp \n${VOLUME_WIDGET_DIR}/ProstView.cpp)\n\n# MODULES\nSET(MODULE_DIR "Module")\n\n# SEGMENTATION\nSET(SEGMENTATION_DIR "Module/Segmentation")\nSET(SEGMENTATION \n${SEGMENTATION_DIR}/DDC2D.cpp \n${SEGMENTATION_DIR}/DDC3D.cpp \n${SEGMENTATION_DIR}/DDC3DHu.cpp \n${SEGMENTATION_DIR}/DDC3DPlus.cpp \n${SEGMENTATION_DIR}/DDC3DBal.cpp \n${SEGMENTATION_DIR}/IMAGE_ENERGY.cpp \n${SEGMENTATION_DIR}/REGULARIZATION.cpp \n${SEGMENTATION_DIR}/OPTIMAL_SURFACE_DETECTION.cpp \n${SEGMENTATION_DIR}/OPTIMAL_MULTIPLE_SURFACES_DETECTION.cpp \n${SEGMENTATION_DIR}/RESAMPLE_From_Prostate.cpp\n${SEGMENTATION_DIR}/RECTAL_WALL_US.cpp \n${SEGMENTATION_DIR}/BLADDER_MRI.cpp \n${SEGMENTATION_DIR}/RECTUM_MRI.cpp \n${SEGMENTATION_DIR}/REGION_GROWING.tpp )\n\n#MESH\nSET(MESH_DIR "Module/Mesh")\nSET(MESH\n${MESH_DIR}/GENERIC_MESH.cpp\n${MESH_DIR}/ELLIPSOID_MESH.cpp\n${MESH_DIR}/PROSTATE_MESH.cpp\n${MESH_DIR}/TUBULAR_MESH.cpp\n${MESH_DIR}/OPEN_MESH.cpp\n${MESH_DIR}/QUADRIC_MESH.cpp\n${MESH_DIR}/ELLIPTICAL_CYLINDER_MESH.cpp \n${MESH_DIR}/CONTOURS_MAN_MESH.cpp)\n\n#STUDY\nSET(STUDY_DIR "Module/Statistics")\nSET(STUDY\n${STUDY_DIR}/PROFILE.cpp\n${STUDY_DIR}/Histogram.cpp\n${STUDY_DIR}/HISTOGRAM_FROM_MESH.cpp\n${STUDY_DIR}/TRAINING_SET_ALIGNMENT.cpp\n${STUDY_DIR}/APPEARANCE_MODEL.cpp)\n\n# MOMENTS\nSET(MOMENTS_DIR "Module/Moments")\nSET(MOMENTS \n${MOMENTS_DIR}/KRAWTCHOUK_Moments.tpp \n${MOMENTS_DIR}/TCHEBICHEF_Moments.tpp \n${MOMENTS_DIR}/GEOMETRIC_Moments.tpp)\n\n#VALIDATION\nSET(VALIDATION_DIR "Module/Evaluation")\nSET(VALIDATION \n${VALIDATION_DIR}/Metrics.cpp)\n\n# Include et Link Directories\nINCLUDE_DIRECTORIES(${FLTK_INCLUDE_DIR} ${VTK_INCLUDE_DIRS} ${VTKFL_INCLUDE_DIR} ${AT_INCLUDE_DIR} ${NII_DIR} ${PROSTVIEW_INCLUDE_DIR} ${VOLUME_WIDGET_DIR} ${MODULE_DIR})\nLINK_DIRECTORIES(${FLTK_LIBRARY_DIR} ${VTK_LIBRARY_DIRS} ${AT_LIBRARY_DIR} ${PROSTVIEW_INCLUDE_DIR} ${VOLUME_WIDGET_DIR} ${MODULE_DIR})\n\n# Sources\nSET(SRC main.cpp) \n\n# Executables and "stand-alone " librairies\nADD_EXECUTABLE(PROSTVIEW ${SRC} ${PROSTVIEW_SRC} ${VTKFL_CPP} ${VOLUME_WIDGET} ${SEGMENTATION} ${MESH} ${STUDY} ${MOMENTS} ${VALIDATION} ${NII_SRC})\n\n# Linkage\nTARGET_LINK_LIBRARIES(PROSTVIEW ${FLTK_LIBRARIES} ${VTK_LIBRARIES} ${ITK_LIBRARIES})\n
Run Code Online (Sandbox Code Playgroud)\n\n我尝试在 CMakeLists.txt 中添加一些库,但它不起作用。谁能告诉我\xe2\x80\x99是什么问题?
\n来自 FLTK 1.3 的 README.CMake.txt:
将 CMAKE 与 FLTK 结合使用
本指南假设您已安装使用 CMake 构建的 FLTK 库。使用 CMake 构建它们会生成一些 CMake 帮助程序文件,这些文件安装在标准位置,使 FLTK 易于查找和使用。
这是使用 FLTK 的基本 CMakeLists.txt 文件。
cmake_minimum_required(版本2.6)
项目(你好)
find_package(FLTK需要NO_MODULE)包括($ {FLTK_USE_FILE})
add_executable(你好WIN32 hello.cxx)
target_link_libraries(你好fltk)
find_package 命令告诉 CMake 查找包 FLTK,REQUIRED 表示如果没有找到则出错。NO_MODULE 告诉它仅搜索 FLTKConfig 文件,而不使用 CMake 提供的 FindFLTK.cmake,后者不适用于此版本的 FLTK。
找到包后,我们将包含 ${FLTK_USE_FILE},它将 FLTK 包含目录和库链接信息添加到其知识库中。之后您的程序将能够找到 FLTK 标头,并且当您链接 fltk 库时,它会自动链接 fltk 所依赖的库。
似乎从 FLTK 1.1 到 1.3,他们改变了查找库所需的方法,也许是出于可比性/测试的原因?
我也被同样的问题困扰,希望有人觉得这很有用。:)
归档时间: |
|
查看次数: |
3932 次 |
最近记录: |