Baffe Boyois đã có câu trả lời chung đúng - quy tắc CMake của bạn phải hoạt động quá nhiều.
On MacOS X 10.5.8 (Leopard), tôi nhận được:
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
...
Bạn nên liệt kê các tập tin bạn cần biên soạn; bạn không nên chỉ biên dịch tất cả và lặt vặt.
Vấn đề có vẻ là trong CMakeLists.txt:
file(GLOB public_headers include/*.h)
file(GLOB private_headers src/*.h)
file(GLOB sources src/*.cpp)
Hoặc là CMake GLOB là một chút quá nhiệt tình (Tôi đang sử dụng phiên bản 2,6-vá 4) hoặc bạn không thể đủ khả năng để sử dụng nó trong khi bất kỳ khách hàng của bạn đang sử dụng MacOS X.
GLOB đang làm gì để mở rộng để bao gồm các tệp bắt đầu bằng '.' là bất kỳ ai đoán; Tôi muốn có khuynh hướng coi nó như một lỗi trong cmake.
Tuy nhiên, như một cách giải quyết, tôi sửa CMakeLists.txt và nhận được để làm việc này:
file(GLOB public_headers include/[a-z]*.h)
file(GLOB private_headers src/[a-z]*.h)
file(GLOB sources src/[a-z]*.cpp)
Đây không phải là giải pháp hoàn chỉnh: Tôi chạy vào một sự tiếp nối của vấn đề với mã trong yaml thư mục -reader. Tôi đã sửa đổi tệp yaml-reader/CMakeLists.txt về cơ bản theo cùng một cách.
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:
$
Một chi tiết kỳ lạ - một số các tập tin trong thư mục 'src' không có các tập tin shadow. Khi tôi làm 'tar -tvf yaml-cpp-0.2.3.tar.gz', tôi thấy các tập tin đang được vận chuyển bằng nguồn:
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
...
Vì vậy, các tập tin hư đang được vận chuyển với các tập tin tar sản phẩm. Bạn đã bị nhiễm một nơi nào đó - không chắc chắn như thế nào.
Xin vui lòng !!! ĐỌC bản phát hành phần mềm HOWTO (http://en.tldp.org/HOWTO/Software-Release-Practice-HOWTO/index.html) - bạn luôn giải nén các công cụ vào một thư mục con (yaml-cpp-0.2.3) và không phân tán mã của bạn xung quanh thư mục hiện tại ... Chết tiệt! (OK: Tôi nên biết rõ hơn - nhưng bạn nên thế!) –
Xin lỗi, bạn nói đúng. Tôi chỉ được sử dụng để nhận được hơi say bởi những người khác theo cách này mà tôi luôn luôn làm cho một thư mục mới anyways khi giải nén. Nhưng vâng, xin lỗi về điều đó, tôi sẽ sửa lỗi đó cho lần sau. Cảm ơn các liên kết, quá. –
@Jesse: không chấp nhận bị làm say bởi những người khác theo cách này. Khoan dung nó một lần; chỉ ra lỗi của con đường của họ với họ, và sau đó từ chối để có bất cứ điều gì nhiều hơn để làm với phần mềm mà sẽ không đối phó với vấn đề. –