Hou*_*dog 3 dll cmake shared-libraries visual-studio-2013
我有以下CMakeLists.txt
project(testproject)
cmake_minimum_required(VERSION 2.8.4)
add_library(library lib.cpp)
add_executable(test.x main.cpp)
target_link_libraries(test.x library)
如果我为visual studio构建一个项目
cmake path\to\project
然后在visual studio express 12中打开解决方案我没有问题.但是,如果我用它构建项目
cmake -DBUILD_SHARED_LIBS=ON path\to\project
然后我在visual studio中收到以下错误:
LINK : fatal error LNK1104: cannot open file 'Debug\library.lib'
这似乎是因为,根据我的指定,visual studio构建了文件'Debug\library.dll'
如果我做一个linux makefile构建,一切正常.
那么......任何想法为什么visual studio仍然在寻找静态库?这是一个cmake bug,还是我做过的事情?
我在windows-side开发方面不是很有经验,所以我很感激你能给予的任何帮助.谢谢!
小智 5
可能这是因为你没有"出口"任何东西.
如果您创建库foo:
add_library(foo foo.cpp foo.hpp)
foo_EXPORTS如果共享库正在构建,CMake将为您提供宏:
cl /c ... /D foo_EXPORTS
您可以使用此宏来声明您的函数,如下所示:
// foo.hpp
#if defined(_WIN32) 
# if defined(foo_EXPORTS)
#  define FOO_EXPORT __declspec(dllexport)
# else
#  define FOO_EXPORT __declspec(dllimport)
# endif // Foo_EXPORTS
#else // _WIN32
# define FOO_EXPORT
#endif
FOO_EXPORT int foo();
可以使用GenerateExportHeader模块自动生成标头:
// foo.hpp
#include "foo_export.h" // foo_export.h is generated for you
FOO_EXPORT int foo();
# CMakeLists.txt
include(GenerateExportHeader) # include module with function `generate_export_header`
include_directories("${PROJECT_BINARY_DIR}") # this is the default directory for generated header, i.e. location of generated file `${PROJECT_BINARY_DIR}/foo_export.h`
add_library(foo foo.cpp foo.hpp)
generate_export_header(foo) # create `foo_export.h`
| 归档时间: | 
 | 
| 查看次数: | 711 次 | 
| 最近记录: |