这是一个非常微不足道的问题,可能是由于我对CMake缺乏经验。我遵循了http://fabzter.com/blog/cmake-tutorial-1中的教程,并且正在处理链接问题。
基本上,我有一个名为MathFuncs的库和一个使用MathFuncs的可执行文件。 MathFuncs的CMakeLists如下:
cmake_minimum_required(VERSION 2.8)
project(MathFuncs)
include_directories(${PROJECT_SOURCE_DIR})
SET (HEADER_FILES mysqrt.hpp)
add_library(MathFuncs SHARED mysqrt.cpp ${HEADER_FILES})
可执行的CMakeLists文件如下:
cmake_minimum_required (VERSION 2.6)
project (Tutorial)
set (Tutorial_VERSION_MAJOR 1)
set (Tutorial_VERSION_MINOR 0)
set (Tutorial_VERSION_BUGFIX 0)
#configure header file to pass some of the CMake settings
#to the source code
configure_file(
"${PROJECT_SOURCE_DIR}/TutorialConfig.h.in"
"${PROJECT_BINARY_DIR}/TutorialConfig.h"
)
# add the binary tree to the search path for include files
# so that we will find TutorialConfig.h
include_directories("${PROJECT_BINARY_DIR}")
# add the include directories necessary to build library
include_directories("${PROJECT_SOURCE_DIR}/MathFuncs}")
add_subdirectory(MathFuncs)
SET (MATHFUNCTIONS_DIR ${PROJECT_SOURCE_DIR}/MathFuncs)
add_executable(tutorial tutorial.cpp ${MATHFUNCTIONS_DIR}/mysqrt.hpp)
target_link_libraries(tutorial MathFuncs)
CMake运行良好。然而,当我尝试使用Visual Studio编译时,出现链接器错误,说明它无法打开MathFuncs.lib。当我从MathFuncs CMakeList中删除'SHARED'选项时,它可以运行,因为它正在构建一个静态库,但是对于我的应用程序,我想要一个共享库DLL。
如何让CMake将库引用设置为共享?
谢谢,
include_directories("${PROJECT_SOURCE_DIR}/MathFuncs}")
多了一个}
吗? - Javi