我開始用下面的目錄結構:不能編譯可執行文件的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
目錄
燦你顯示你的CMakeLists.txt的內容? – Antonio
是的。我有很多庫,所以我會盡量保持簡短。 –
你可以嘗試看看會發生什麼,如果你刪除了語句SET(EXECUTABLE_OUTPUT_PATH $ {PROJECT_BINARY_DIR}/bin)'和SET(LIBRARY_OUTPUT_PATH $ {PROJECT_BINARY_DIR}/lib)' – Antonio