简单的问题 - 这些是否可以在编译期间不必调用库?我的意思是,我想简单地调用g ++ main.cpp而不调用g ++ main.cpp -lGL -lGLU -lGLEW -lSTL -lMyMother等等...我知道,makefile或简单的shell脚本,但我想制作它优雅的方式 - 在cpp代码中调用这些库 - 类似于'使用GL;'。
答案 0 :(得分:2)
由于您正在使用GCC,因此您可以创建/修改specs file以添加所需的标记。
如果你不想输入标志,你真的应该使用makefile。
答案 1 :(得分:1)
从技术上讲,你可以通过dlopen()
动态加载库并从中调用函数(我假设你在* nix上)。虽然那不是一回事,我怀疑会让你的生活更轻松。除此之外,没有可移植的方法来指定在源文件中使用哪个库。
答案 2 :(得分:1)
在Linux上,您可以使用pkg-config和shell扩展。使用pkg-config --list-all
来发现它已知的包(您可以添加.pc
文件来添加新包)。例如,可以使用
mygtkapp.c
gcc -Wall -g $(pkg-config --cflags gtk+-x11-3.0) -c mygtkapp.c
然后与
联系gcc -g mygtkapp.o $(pkg-config --libs gtk+-x11-3.0) -o mygtkapp
请注意,gcc
的参数顺序始终很重要。当然使用g++
来编译带有GCC的C ++应用程序。
还要考虑使用像this one这样的Makefile
。然后输入make
来构建您的软件(例如make clean
来清理构建树)。
您可能会在Makefile
中使用奇怪的技巧,例如使用awk
解析C ++代码中的一些注释来提供make
,但我认为这是一个坏主意。
从技术上讲,您仍然会将-I
和-D
标记(在编译时)和-L
和-l
标记(在链接时)传递给gcc
或g++
但pkg-config
实用程序(或make
....)正在生成这些标记。
如果使用emacs
编辑源代码,可以在C文件末尾添加注释以设置emacs
的某些编译命令,请参阅this。
PS。我不建议为此目的配置GCC规范文件。