Baffe Boyois has the right general answer - your CMake rules should do too much.
On MacOS X 10.5.8 (Leopard) I get:
Osiris JL: cmake .. -- The C compiler identification is GNU -- The CXX compiler identification is GNU -- Check for working C compiler: /usr/bin/gcc -- Check for working C compiler: /usr/bin/gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Configuring done -- Generating done -- Build files have been written to: /Users/jleffler/tmp/yaml-cpp-0.2.3/build Osiris JL: make Scanning dependencies of target yaml-cpp [ 2%] Building CXX object CMakeFiles/yaml-cpp.dir/src/._conversion.cpp.o /tmp/yaml-cpp-0.2.3/src/._conversion.cpp:1:1: warning: null character(s) ignored /tmp/yaml-cpp-0.2.3/src/._conversion.cpp:1: error: stray '\5' in program /tmp/yaml-cpp-0.2.3/src/._conversion.cpp:1: error: stray '\22' in program /tmp/yaml-cpp-0.2.3/src/._conversion.cpp:1: error: stray '\7' in program /tmp/yaml-cpp-0.2.3/src/._conversion.cpp:1:5: warning: null character(s) ignored /tmp/yaml-cpp-0.2.3/src/._conversion.cpp:1: error: stray '\2' in program /tmp/yaml-cpp-0.2.3/src/._conversion.cpp:1:7: warning: null character(s) ignored /tmp/yaml-cpp-0.2.3/src/._conversion.cpp:1:17: warning: null character(s) ignored ...
You must specify the files you need to compile; you should not just compile everything and everything.
The problem seems to be in CMakeLists.txt:
file(GLOB public_headers include/*.h) file(GLOB private_headers src/*.h) file(GLOB sources src/*.cpp)
Either CMake GLOB is a little enthusiastic (I use version 2.6-patch 4), or you cannot afford to use it while any of your clients use MacOS X.
What GLOB does the extension to include files starting with '.' anyone guesses; I would be inclined to regard this as a mistake in cmake.
However, as a workaround, I edited CMakeLists.txt and got this to work:
file(GLOB public_headers include/[az]*.h) file(GLOB private_headers src/[az]*.h) file(GLOB sources src/[az]*.cpp)
This is not a complete solution: I encountered a continuation of the problem with the code in the yaml-reader directory. I changed the yaml-reader / CMakeLists.txt file in basically the same way.
FWIW:
$ file ._* ._conversion.cpp: AppleDouble encoded Macintosh file ._exp.cpp: AppleDouble encoded Macintosh file ._map.cpp: AppleDouble encoded Macintosh file ._map.h: AppleDouble encoded Macintosh file ._node.cpp: AppleDouble encoded Macintosh file ._null.cpp: AppleDouble encoded Macintosh file ._ostream.cpp: AppleDouble encoded Macintosh file ._parser.cpp: AppleDouble encoded Macintosh file ._regex.cpp: AppleDouble encoded Macintosh file ._regeximpl.h: AppleDouble encoded Macintosh file ._scanner.cpp: AppleDouble encoded Macintosh file ._scanner.h: AppleDouble encoded Macintosh file ._scanscalar.cpp: AppleDouble encoded Macintosh file ._scanscalar.h: AppleDouble encoded Macintosh file ._sequence.cpp: AppleDouble encoded Macintosh file ._simplekey.cpp: AppleDouble encoded Macintosh file ._stream.cpp: AppleDouble encoded Macintosh file ._token.h: AppleDouble encoded Macintosh file $ odx ._con*.cpp 0x0000: 00 05 16 07 00 02 00 00 4D 61 63 20 4F 53 20 58 ........Mac OS X 0x0010: 20 20 20 20 20 20 20 20 00 02 00 00 00 09 00 00 ........ 0x0020: 00 32 00 00 00 79 00 00 00 02 00 00 00 AB 00 00 .2...y.......... 0x0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ * 0x0050: 00 00 00 00 41 54 54 52 00 3C E0 2B 00 00 00 AB ....ATTR.<.+.... 0x0060: 00 00 00 9C 00 00 00 0F 00 00 00 00 00 00 00 00 ................ 0x0070: 00 00 00 00 00 00 00 01 00 00 00 9C 00 00 00 0F ................ 0x0080: 00 00 17 63 6F 6D 2E 61 70 70 6C 65 2E 54 65 78 ...com.apple.Tex 0x0090: 74 45 6E 63 6F 64 69 6E 67 00 00 00 55 54 46 2D tEncoding...UTF- 0x00A0: 38 3B 31 33 34 32 31 37 39 38 34 8;134217984 0x00AB: $
One odd detail - some of the files in the 'src' directory do not have shadow files. When I do "tar -tvf yaml-cpp-0.2.3.tar.gz", I see that the files are being sent along with the source:
Osiris JL: tar -tvf yaml-cpp-0.2.3.tar.gz drwxr-xr-x beder/staff 0 2009-10-22 15:13:52 ./ -rw-r--r-- beder/staff 1750 2009-10-22 15:09:05 ./CMakeLists.txt drwxr-xr-x beder/staff 0 2009-10-19 16:40:15 ./include/ -rw-r--r-- beder/staff 171 2009-09-06 13:41:54 ./include/._conversion.h -rw-r--r-- beder/staff 1118 2009-09-06 13:41:54 ./include/conversion.h -rw-r--r-- beder/staff 302 2009-07-29 15:25:23 ./include/crt.h -rw-r--r-- beder/staff 2254 2009-10-19 16:40:14 ./include/emitter.h -rw-r--r-- beder/staff 1660 2009-10-19 16:40:14 ./include/emittermanip.h -rw-r--r-- beder/staff 171 2009-08-18 22:07:22 ./include/._exceptions.h -rw-r--r-- beder/staff 5638 2009-08-18 22:07:22 ./include/exceptions.h -rw-r--r-- beder/staff 765 2009-07-29 15:25:23 ./include/iterator.h -rw-r--r-- beder/staff 444 2009-07-29 15:25:23 ./include/mark.h -rw-r--r-- beder/staff 171 2009-09-06 12:25:12 ./include/._node.h -rw-r--r-- beder/staff 3467 2009-09-06 12:25:12 ./include/node.h -rw-r--r-- beder/staff 171 2009-09-15 20:54:20 ./include/._nodeimpl.h ... -rw-r--r-- beder/staff 171 2009-07-29 21:28:26 ./include/._yaml.h -rw-r--r-- beder/staff 321 2009-07-29 21:28:26 ./include/yaml.h -rw-r--r-- beder/staff 167 2009-09-05 16:01:06 ./._install.txt -rw-r--r-- beder/staff 652 2009-09-05 16:01:06 ./install.txt -rw-r--r-- beder/staff 1073 2009-05-29 19:31:21 ./license.txt drwxr-xr-x beder/staff 0 2009-10-22 14:49:11 ./src/ -rw-r--r-- beder/staff 1697 2009-08-24 16:28:46 ./src/aliascontent.cpp -rw-r--r-- beder/staff 1171 2009-08-24 16:28:46 ./src/aliascontent.h -rw-r--r-- beder/staff 112 2009-05-29 19:31:21 ./src/content.cpp -rw-r--r-- beder/staff 1557 2009-08-24 16:28:46 ./src/content.h -rw-r--r-- beder/staff 171 2009-09-06 13:31:56 ./src/._conversion.cpp -rw-r--r-- beder/staff 2027 2009-09-06 13:31:56 ./src/conversion.cpp ...
Thus, miscreant files are sent along with the tar file. You got infected somewhere - you donβt know how to do it.