我今天遇到了一个有趣的问题。我正在尝试编译一个测试可执行文件并将其链接到BoostUnit测试框架,并以两种不同的方式进行了尝试。
-
直接链接到“Boost单元测试框架”库的经典方法
-lboost_unit_test_framework
-
连接到
Boost::unit_test_framework
制作目标。
有趣的是,当我直接链接到库时,我的代码会编译并链接良好;但是当我链接到cmake目标时,我的代码甚至在到达链接阶段之前都无法编译!
我得到的错误与一个头文件有关,它突然找不到了。这表明链接到
Boost::单元测试框架
不知怎么搞砸了我的include路径。
我知道链接到一个cmake目标应该是更现代和首选的方法,但如果它能有如此意想不到和无法解释的副作用,它似乎比直接链接到库更糟糕…
为什么链接cmake目标会导致不再找到头文件?还有什么其他类型的东西可以链接到cmake目标而不是直接链接到库影响?
在这两种情况下,我都使用
target_link_libraries
链接到Boost库。例如
target_link_libraries(mytest_exe
testlib
-lboost_unit_test_framework
)
或
target_link_libraries(mytest_exe
testlib
Boost::unit_test_framework
)