无法使用CMake编译可执行文件

时间:2013-07-11 21:29:08

标签: gcc makefile cmake

我从以下目录结构开始:

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文件

1 个答案:

答案 0 :(得分:1)

一个问题,可能不是解决问题,是:

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