- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 /home/username/local/include
下安装了 boost。我想在 CPPPATH 下用这个集合编译一个库。
构造:
env = Environment(CPPPATH = '/home/username/local/include')
env.Library('MyLib', 'library.cpp')
库.cpp:
#include <boost/shared_ptr.hpp> // library.cpp:1:32: error: boost/shared_ptr.hpp: No such file or directory
void foo() { }
但是,当我运行 scons
时,它给出错误 error: boost/shared_ptr.hpp: No such file or directory
。
对一个程序做同样的事情就可以了。
构造:
env = Environment(CPPPATH = '/home/username/local/include')
env.Program('program.cpp')
程序.cpp:
#include <boost/shared_ptr.hpp> // works
int main() { return 0; }
我在这里错过了什么?
编辑
这是输出:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o library.o -c -I/home/m/local/include library.cpp
library.cpp:1:32: error: boost/shared_ptr.hpp: No such file or directory
scons: *** [library.o] Error 1
scons: building terminated because of errors.
最佳答案
我无法在我的系统上重现您的错误。你那里的一切在我看来都很合适。
我创建了一个伪造的 boost include 设置,并使用了不同的文件名,这样它就不会意外地进入/usr 中我真正的 boost include。我正在使用 SCons 2.0.1。
$ find /home/acm/local/include -type f
/home/acm/local/include/boost/not_a_boost_header.hpp
库.cpp:
#include <boost/not_a_boost_header.hpp>
void foo() { }
程序.cpp:
#include <boost/not_a_boost_header.hpp>
int main() { return 0; }
构造:
env1 = Environment(CPPPATH = '/home/acm/local/include')
env1.Library('MyLib', 'library.cpp')
env2 = Environment(CPPPATH = '/home/acm/local/include')
env2.Program('program.cpp')
构建结果:
$ scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o library.o -c -I/home/acm/local/include library.cpp
ar rc libMyLib.a library.o
ranlib libMyLib.a
g++ -o program.o -c -I/home/acm/local/include program.cpp
g++ -o program program.o
scons: done building targets.
你能发布完整的 SCons 输出吗?
关于c++ - SCons:如何让库获取 CPPPATH 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8508298/
问题描述 我正在尝试使用 scons 构建一个模块化系统来编译多个共享库,其中一些共享库依赖于其他共享库。虽然我可以使用一些不同的变通办法来编译它,但每个变通办法都有一些缺点,如“尝试的解决方案”部分
在阅读 scons 的手册页时,我的理解是,scons 并不总是意识到头文件更改时,cpp 源文件也应该更改。我做了一个实验,但只是发现,无论我们是否指定了 CPPPATH,scons 似乎总是会检测
我在 /home/username/local/include 下安装了 boost。我想在 CPPPATH 下用这个集合编译一个库。 构造: env = Environment(CPPPATH =
这是我的简单案例。我得到的源文件结构如下: . ├── SConstruct └── src ├── SConscript ├── staticLib │ ├── clas
我正在使用 Scons/Sconstruct 构建具有以下目录结构的项目: +A |--A1 |--A2 +B |--B1 |-b1.cpp “A”目录包含 B1 中的构造文件引用的代码,如下所示
例如,我有一个名为 1.h 的头文件: #define MY 3 然后我有一个名为 myc 的子目录以及 1.c 和 f.c 文件: $ cat 1.c void f(); int main() {
我是一名优秀的程序员,十分优秀!