1

我从以下目录结构开始:

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

4

1 回答 1

1

一个问题,可能不是 risolutive,是这样的:

link_directories(${core_SOURCE_DIR}/lib) #not sure if this is required

应该:

link_directories(${PROJECT_BINARY_DIR}/lib) 

或者:

link_directories(${LIBRARY_OUTPUT_PATH}) 

无论如何,通常您不需要将项目内构建的库的路径添加到您的 link_directories,即使您指定了不同的 LIBRARY_OUTPUT_PATH

于 2013-07-11T22:27:12.393 回答