我正在尝试在我的 makefile 中包含额外库的路径,但我无法弄清楚如何让编译器使用该路径。到目前为止,我有:
g++ -g -Wall testing.cpp fileparameters.cpp main.cpp -o test
我想要包含路径到
/data[...]/lib
因为 testing.cpp
包含了来自该库的文件。此外,我在 Linux 机器上运行。
编辑:这不是一个指向库的路径,而只是包含在其中的头文件。我的错误。
我正在尝试在我的 makefile 中包含额外库的路径,但我无法弄清楚如何让编译器使用该路径。到目前为止,我有:
g++ -g -Wall testing.cpp fileparameters.cpp main.cpp -o test
我想要包含路径到
/data[...]/lib
因为 testing.cpp
包含了来自该库的文件。此外,我在 Linux 机器上运行。
编辑:这不是一个指向库的路径,而只是包含在其中的头文件。我的错误。
要指定一个用于搜索(二进制)库的目录,只需使用-L
:
-L/data[...]/lib
要指定实际的库名称,您需要使用-l
:
-lfoo # (links libfoo.a or libfoo.so)
要指定一个目录以搜索包含文件(不同于库!),您需要使用-I
:
-I/data[...]/lib
所以,我认为你想要的是这样的:
g++ -g -Wall -I/data[...]/lib testing.cpp fileparameters.cpp main.cpp -o test
这些编译器标志(以及其他一些)也可以在GNU GCC命令选项手册中找到:
.cpp
文件名之前应该加上-I
。 - Ernest Friedman-Hill在你的MakeFile或CMakeLists.txt文件中,你可以按以下方式设置CMAKE_CXX_FLAGS:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/path/to/your/folder")
或者您可以设置环境变量。
假设您正在使用 bash
,那么在 ~/.bashrc
中,写入以下内容:
C_INCLUDE_PATH="/data/.../lib/:$C_INCLUDE_PATH" ## for C compiler
CPLUS_INCLUDE_PATH="/data/.../lib/:$CPLUS_INCLUDE_PATH" ## for Cpp compiler
export C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH
并使用source ~/.bashrc
命令进行源码控制。
这样你就可以顺利进行操作了。