2011-11-15 32 views
5

Tôi đang cố gắng vượt qua biên dịch bzip2 trong Linux bằng cách sử dụng lệnh ExternalProject_Add(...) của CMake.Truyền tham số với dấu cách tới CMake ExternalProject_Add BUILD_COMMAND

Tuy nhiên, để biên dịch libbzip chéo, bạn phải sửa đổi một số macro Makefile để thực thi bản dựng. Dưới đây là cross hiện tại của tôi biên dịch biến:

set(bzlib_CROSS CC=${CROSS_PREFIX}gcc AR=${CROSS_PREFIX}ar RANLIB=${CROSS_PREFIX}ranlib LDFLAGS=-L${bzlib_MINGW_SRC}/lib CFLAGS=-Wall -Winline -O2 -g -I${bzlib_MINGW_SRC}/include) 

Biến này sau đó được sử dụng cho việc xây dựng lệnh

set(bzlib_BUILD make ${bzlib_CROSS} PREFIX=${DEPENDENCY_DIR}) 

CMake sai lầm vì nó đang cố gắng để vượt qua -O2, -g, vv để make, trong đó tất nhiên không làm việc, nhưng khi tôi cố gắng thêm dấu ngoặc kép quanh biến CFLAGS nó nói

cc1: error: unrecognized command line option '-Wall -Winline -O2 -g -I/long/path/here/include' 

có thể thiết lập một macro Makefile với không gian trong bằng cách sử dụng số BUILD_COMMAND của CMake? Cảm ơn!

Trả lời

6

đặn nó ra ... tôi cần phải chia chuỗi trích dẫn vào biến riêng của mình như thế này

set(bzlib_CFLAGS "-Wall -Winline -O2 -g -I${bzlib_MINGW_SRC}/include") 
set(bzlib_CROSS CC=${CROSS_PREFIX}gcc AR=${CROSS_PREFIX}ar RANLIB=${CROSS_PREFIX}ranlib LDFLAGS=-L${bzlib_MINGW_SRC}/lib CFLAGS=${bzlib_CFLAGS}) 

này làm việc!

+4

Nội tuyến "CFLAGS = -Wall -Winline -O2 -g -I $ {bzlib_MINGW_SRC}/include" với dấu ngoặc kép xung quanh toàn bộ nội dung cũng sẽ tương đương với cấu trúc bạn đã đến ... – DLRdave

+0

Điều cần biết! CMake thật tuyệt vời =) – mevatron

Các vấn đề liên quan