Hi, Right now I’m working on ARROW-11297 which adds WriterOptions to the ORCWriter (and will be a separate PR). After adding new files (adapter_options.h & adapter_options.cc <http://adapter_options.cc/>) I found that src/arrow/CMakeFiles/arrow_objlib.dir/adapters/orc/adapter_options.cc.o doesn’t exist and as a result ld obviously can not find the symbols that should be contained in it even though I use ARROW_EXPORT to indicate that arrow::adapters::orc::WriterOptions does need to be exported. I wonder whether there is some setting in CMake I should change in order to fix that.
Here is the error message: [ 89%] Linking CXX executable ../../../../debug/arrow-orc-adapter-test Undefined symbols for architecture x86_64: "arrow::adapters::orc::WriterOptions::WriterOptions()", referenced from: arrow::AssertTableWriteReadEqual(std::__1::shared_ptr<arrow::Table> const&, std::__1::shared_ptr<arrow::Table> const&, long long) in adapter_test.cc.o "arrow::adapters::orc::WriterOptions::~WriterOptions()", referenced from: arrow::AssertTableWriteReadEqual(std::__1::shared_ptr<arrow::Table> const&, std::__1::shared_ptr<arrow::Table> const&, long long) in adapter_test.cc.o "arrow::adapters::orc::AdaptWriterOptions(arrow::adapters::orc::WriterOptions const&)", referenced from: arrow::adapters::orc::ORCFileWriter::Impl::Write(arrow::Table const&, arrow::adapters::orc::WriterOptions const&) in libarrow.a(adapter.cc.o) ld: symbol(s) not found for architecture x86_64 clang-11: error: linker command failed with exit code 1 (use -v to see invocation) make[3]: *** [debug/arrow-orc-adapter-test] Error 1 make[2]: *** [src/arrow/adapters/orc/CMakeFiles/arrow-orc-adapter-test.dir/all] Error 2 make[1]: *** [CMakeFiles/unittest.dir/rule] Error 2 make: *** [unittest] Error 2 Ying