我从以下目录结构开始:
project
exec
executable.exe
lib
src
include
config
<cmake-generated config file>
lib/src
我使用文件夹中的 CMakefile 在文件夹中创建了库lib/src
。该exe将编译。
然后,我将我的 CMakeFile 移动到/lib
,确保将源文件路径更改为/src/*
现在,当我尝试编译时,我的所有库都编译并链接正常,但是当我尝试链接可执行文件时,我得到/usr/bin/ld: cannot find -lconfig
.
有谁知道为什么会发生这种情况或如何解决?
这是我的一些代码:
./CMakeLists.txt:
include_directories(config)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
ADD_SUBDIRECTORY(libs) #library sources
ADD_SUBDIRECTORY(exec) #executable sources
CONFIGURE_FILE(${core_SOURCE_DIR}/config/config.h.in
${core_SOURCE_DIR}/config/config.h)
./libs/CMakeLists.txt:
file(GLOB src ...)
file(GLOB header ...)
add_library(lib ${src} ${header})
./exec/CMakeLists:
add_executable(executable executable.cpp)
link_directories(${core_SOURCE_DIR}/lib) #not sure if this is required
target_link_libraries(executable ${lots_of_libs})
中的每个库lots_of_libs
都可以作为目录.a
中的文件找到lib