full error is available at AppVeyor。
我使用CMake的add_library
命令创建了一个库,但是当我尝试将另一个目标编译到这个库时,我得到了像LINK : fatal error LNK1104: cannot open file '..\Debug\boost_http.lib' [C:\projects\boost-http\build\test\algorithm.vcxproj]
这样的愚蠢错误。
其他CMake生成器也可以。
如何正确处理此问题?
答案 0 :(得分:1)
从另一个问题来看,我收集的项目是this one。
问题的原因是您将boost_http
构建为共享库,但不从中导出任何函数或类。您需要使用__declspec(dllexport)
修饰公共API函数/类,以使这些函数/类可用于使用目标。有关详细信息,请参阅Microsoft docs。
如果你这样做,你会发现除了boost_http.dll之外还会有一个名为boost_http.lib的小文件,这是消费目标实际链接到的文件。这是您的测试被告知链接到的,但它不存在。
CMake GenerateExportHeader可以在这方面提供帮助。有关如何在the wiki中使用它的说明。
但是,更简单的解决方法是将boost_http
目标设为静态。通过更改为add_library("boost_http" STATIC ${library_SRC})
,项目应该按原样运行。