1
如何爲通過ExternalProject_Add()
宏在CMake(使用3.0.0)中構建的項目指定RPATH?爲外部構建的CMAKE項目指定RPATH
作爲參考,假設我的ExternalProject是SFML。我的外部項目調用看起來像:
set(SFML_INSTALL_PATH "${CMAKE_CURRENT_BINARY_DIR}/ext-deps/ext-sfml-build")
set(SFML_RPATH "${SFML_INSTALL_PATH}/src/lib")
set(SFML_CMAKE_ARGS -DCMAKE_BUILD_TYPE:STRING=Release -DUSE_STATIC_LIBS:BOOL=true
-DCMAKE_INSTALL_PREFIX:PATH=${SFML_INSTALL_PATH}
-DCMAKE_INSTALL_RPATH:PATH=${SFML_RPATH})
ExternalProject_Add(ext-sfml
GIT_REPOSITORY "${SFML_REPO}"
GIT_TAG "${SFML_TAG}"
URL SFML_URL
URL_HASH 256=${SFML_SHA256}
CMAKE_ARGS "${SFML_CMAKE_ARGS}"
TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/${EXT_DEPS_PREFIX}/ext-sfml-tmp"
STAMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/${EXT_DEPS_PREFIX}/ext-sfml-stamp"
INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/${EXT_DEPS_PREFIX}/ext-sfml-build"
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/${EXT_DEPS_PREFIX}/ext-sfml"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/${EXT_DEPS_PREFIX}/ext-sfml-build"
TEST_COMMAND "")
錯誤命令當我運行生成步驟(配置是罰款)我得到的是
Make Error at src/cmake_install.cmake:45 (file):
file RPATH_CHANGE could not write new RPATH:
/home/hendrix/repo/project/build/ext_deps/ext_sfml-build/lib
to the file:
/home/hendrix/repo/project/build/ext_deps/ext_sfml-build/bin/exe
最後,這個「/家/亨德里克斯/回購/項目/ build/ext_deps/ext_sfml-build/lib「是我試圖修改的行。看起來,它是我的$ {CMAKE_INSTALL_RPATH}變量的值,但包含我的ext-dep項目的安裝前綴,而不包含頂級主項目。
我剛剛注意到我的'$ {CMAKE_INSTALL_PREFIX}'可能有問題,因爲它指向我的頂級CMake項目的目錄。我如何將其指向ExternalProject安裝目錄? – BlazePascal
您將變量'SFML_CMALE_ARGS'聲明爲包含多個元素的列表。但是,如果取消引用此變量,則將其括入*雙引號*,因此將其視爲**單值**變量。刪除雙引號,參數將正確傳遞。 – Tsyvarev
@Tsyvarev試圖刪除引號,但我得到了同樣的錯誤信息。 RPATH似乎與$ {SFML_CMAKE_ARGS}中的那個不一樣。 – BlazePascal