在这段代码中:
JLabel emptyLabel = new JLabel("");
emptyLabel.setPreferredSize(new Dimension(175, 100));
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
Run Code Online (Sandbox Code Playgroud)
我可以看到它生成一个新标签并将其添加到JFrame
对象中frame
.但我想知道做了getContentPane()
什么,为什么需要它呢?
我读了这个API,但我仍然不明白.
我有一个简单的可执行文件,它使用位于的mylib库中的函数~/mylib/lib/libmylib.so
。
在 上CMakeLists.txt
,我告诉 CMAKE 在哪里可以找到该库并链接它:
find_library(MYLIB_PATH mylib HINT $ENV{HOME}/mylib/lib)
target_link_libraries (output "${MYLIB_PATH}")
Run Code Online (Sandbox Code Playgroud)
执行完后生成Makefile,调用cd build; cmake ..
编译成功make
。
但假设我评论了第二行CMakeLists.txt
,如
find_library(MYLIB_PATH mylib HINT $ENV{HOME}/mylib/lib)
# target_link_libraries (output "${MYLIB_PATH}")
Run Code Online (Sandbox Code Playgroud)
并执行相同的操作cd build; cmake ..
。我得到完全相同的 Makefile,但是由于make
这些类型的错误而失败:
In function `Model::Model(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
Model.cpp:(.text+0x21): undefined reference to `TF_NewStatus'
Run Code Online (Sandbox Code Playgroud)
由于库未链接而失败是有道理的。但如果两个Makefile相同,为什么一个会make
失败而另一个不会呢?