在构建过程中包含Boost库的最佳实践是什么?
为了举例说明,假设我们的项目使用了Boost的正则表达式,并且编译如下:
g++ -lboost_regex -o main main.cpp
…这意味着我可以编写一个Makefile,它只包含以下内容:
LDFLAGS+=-lboost_regex
不幸的是,这不适用于我的系统:
$ make main
ld: library not found for -lboost_regex
collect2: error: ld returned 1 exit status
这是可以理解的,因为我没有指定库路径,Boost安装在编译器找不到的位置。
显
表示它设置了HAVE_BOOST。因此,我在我的configure.ac文件中尝试了它:
AX_BOOST_BASE([1.48],, [AC_MSG_ERROR([libfoo needs Boost, but it was not found in your system])])
AC_MSG_NOTICE(["HAVE_BOOST value"])
AC_MSG_NOTICE([$HAVE_BOOST])
当我运行configure时,HAVE_BOOST似乎没有任何价值:
checking for boostlib >= 1.48 (104800)... yes
我正在使用CMake生成一个makefile来编译一个使用boost、eigen和boost客户端库的C++项目。
在make过程中,代码似乎被编译了,但是在链接阶段,我得到了错误
ld: library not found for -lmysqlclient
在我的CMakeLists.txt文件中有一行target_link_libraries(my_executable mysqlclient)。当我删除这一行时,我不再收到该错误消息,但随后我得到了一长串未定义的符号错误(所有这些都与mysql有关)。项目可以在Xcode中正确构建,所以我知道至少mysql客户端库已经在我的机器上设置好