cmake在图书馆外使用"在一起" "按需提供"

时间:2016-11-21 03:43:36

标签: c++ c cmake

例子:我下载zlib,放入目录而不编译。 然后创建一个项目尝试使用zlib:

project(hello) 

SET(MODULE_PATH C:/modules)

INCLUDE_DIRECTORIES(${MODULE_PATH}/zlib-1.2.8) 


add_library(zlib STATIC ${MODULE_PATH}/zlib-1.2.8) 

add_executable(hello hello.cpp) 

target_link_libraries(hello zlib)

不起作用(vs2015 NMake的cmake):无法确定目标" zlib"的链接语言。 怎么了?如何按需使用库(不需要预编译)

.............好吧,我接近......我希望如此 这是我的导演:

zlib在F:\ cmake \ modules \ zlib-1.2.8

在F:\ cmake \ test1

中测试项目

这是我的CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project(hello)
set(BUILD_SHARED_LIBS OFF)
SET(MODULE_PATH ../modules)
list(APPEND CMAKE_MODULE_PATH ${MODULE_PATH})
INCLUDE_DIRECTORIES(${MODULE_PATH}/zlib-1.2.8)
INCLUDE_DIRECTORIES(libs)
add_subdirectory(${MODULE_PATH}/zlib-1.2.8 libs)
add_executable(hello hello.cpp)
target_link_libraries(hello  zlib)

现在我可以为nmake或mingw32做成功!

但是...似乎设置(BUILD_SHARED_LIBS OFF)没有效果:zlib gen dll和静态lib和mingw自动链接dll lib。 我不想将target_link_libraries(hello zlib)更改为 target_link_libraries(hello libzlibstatic.a)因为nmake的项目不是这个名字....

现在我怎样才能改进这一点,理想情况下只需要cmake..nmake / ming32-make / make(Borland' s)?

0 个答案:

没有答案