我是初学CMake,我会用它编译我的项目。 我有以下的CMakeLists.txt:如何使用共享库静态与cmake
cmake_minimum_required (VERSION 2.6)
project (rt)
include_directories ("${PROJECT_BINARY_DIR}/src/")
include_directories ("${PROJECT_BINARY_DIR}/src/hook")
include_directories ("${PROJECT_BINARY_DIR}/src/light")
include_directories ("${PROJECT_BINARY_DIR}/src/move")
include_directories ("${PROJECT_BINARY_DIR}/src/object/inter")
include_directories ("${PROJECT_BINARY_DIR}/src/object/normal")
include_directories ("${PROJECT_BINARY_DIR}/src/option")
include_directories ("${PROJECT_BINARY_DIR}/src/parsing")
include_directories ("${PROJECT_BINARY_DIR}/src/ray")
include_directories ("${PROJECT_BINARY_DIR}/src/render")
include_directories ("${PROJECT_BINARY_DIR}/src/shadow")
include_directories ("${PROJECT_BINARY_DIR}/src/utils")
include_directories ("${PROJECT_BINARY_DIR}/lib/minilibx")
file(GLOB hook
"*.h"
"*.c"
)
file(GLOB_RECURSE SRC_FILES ${PROJECT_SOURCE_DIR}/src/*.c)
#set (EXTRA_LIBS ${EXTRA_LIBS} ${X11_LIBRARIES} m)
add_executable (rt ${SRC_FILES})
target_link_libraries (rt ${EXTRA_LIBS} X11 Xext m ${PROJECT_BINARY_DIR}/lib/libmlx.a)
但是当我运行make
,我的静态库minilibx
将无法编译。但出错的是X11
和Xext
库中的所有函数都未定义。
使VERBOSE = 1结果:
连接C可执行室温 的/ usr /斌/ cmake的-E cmake_link_script CMakeFiles/rt.dir/link.txt --verbose = 1 的/ usr/bin中/立方厘米CMakeFiles /rt.dir/src/move/translation.co CMakeFiles/rt.dir/src/move/rotation.co CMakeFiles/rt.dir/src/light/light.co CMakeFiles/rt.dir/src/option/option。 CMakeFiles/rt.dir/src/option/file_option.co CMakeFiles/rt.dir/src/render/render.co CMakeFiles/rt.dir/src/hook/control.co CMakeFiles/rt.dir/src/ray/eye.co CMakeFiles/rt.dir/src/ray/ray.co CMakeFiles/rt.dir/src/utils/my_strlen.co CMakeFiles/rt.dir/src/utils/my_strncpy.co CMakeFiles/rt.dir/src/object/inter/plan.co CMakeFiles/rt.dir/src/object/inter/cone.co CMakeFiles/rt.dir/src/object/in CMakeFiles/rt.dir/src/object/inter/sphere.co CMakeFiles/rt.dir/src/object/inter/tore.co CMakeFiles/rt.dir/src/object/normal/plan.co CMakeFiles/rt.dir/src/object/normal/cone.co CMakeFiles/rt.dir/src/object/normal/cylinder.co CMakeFiles/rt.dir/src/object/normal/sphere.co CMakeFiles/rt.dir /src/parsing/scene.co CMakeFiles/rt.dir/src/parsing/file_access.co CMakeFiles/rt.dir/src/parsing/str_tool.co CMakeFiles/rt.dir/src/shadow/shadow.co CMakeFiles/rt .DIR/SRC/main.co -o室温-rdynamic -lX11 -lXext -lm LIB/libmlx.a
,这是错误的一个例子:
LIB/libmlx.a(mlx_init.o) :在函数mlx_int_deal_shm'中: mlx_init.c :(.text + 0x2a):undefined reference toXShmQueryVersion' mlx_init.c :(文字+量0x104):未定义的引用`XShmPixmapFormat”
如何解决未定义引用错误?
好,我编辑新信息的问题 –