2
get_filename_component(a_dir ${some_file} PATH)
get_filename_component(a_last_dir ${a_dir} NAME)
在這a_last_dir應該返回我的目錄和a_dir的最低水平應該回到我的完整目錄。
無論如何,我可以使a_second_last_dir可能?要返回完整目錄的第二低級別?
get_filename_component(a_dir ${some_file} PATH)
get_filename_component(a_last_dir ${a_dir} NAME)
在這a_last_dir應該返回我的目錄和a_dir的最低水平應該回到我的完整目錄。
無論如何,我可以使a_second_last_dir可能?要返回完整目錄的第二低級別?
談到我的意見爲答案
您可以通過附加../..
使用get_filename_component()
。
我理解你目前的解決方案是這樣的:
cmake_minimum_required(VERSION 2.8)
project(SecondLastDirName)
set(some_file "some/dir/sub/some_file.h")
get_filename_component(a_dir "${some_file}" PATH)
get_filename_component(a_last_dir "${a_dir}" NAME)
get_filename_component(a_second_dir "${a_dir}" PATH)
get_filename_component(a_second_last_dir "${a_second_dir}" NAME)
message("a_second_last_dir = ${a_second_last_dir}")
其中給出a_second_last_dir = dir
作爲輸出。
你可以得到相同的輸出用:
get_filename_component(a_second_dir "${some_file}/../.." ABSOLUTE)
get_filename_component(a_second_last_dir "${a_second_dir}" NAME)
message("a_second_last_dir = ${a_second_last_dir}")
中間a_second_dir
路徑可能是無效/非現有路徑(因爲CMAKE_CURRENT_SOURCE_DIR
前綴),但我認爲這並不重要位置。
如果您希望它是一個正確的絕對路徑,您應該自己在正確的基本目錄前添加前綴(或參閱CMake 3.4,其中介紹BASE_DIR
選項爲get_filename_component(... ABSOLUTE)
)。
通過追加'..'?例如。 'get_filename_component(a_second_last_dir「/some/dir/sub/../ ..」ABSOLUTE)' – Florian
我沒有可用的完整目錄來添加'..' ... –
您可以舉一個目錄名稱的例子以及你想要提取什麼部分?我們在談論像[這裏](http://stackoverflow.com/questions/28348309/in-python-how-should-one-extract-the-second-last-directory-name-in-a-path) ? CMake的['string()'](https://cmake.org/cmake/help/v3.4/command/string.html)命令也允許很多事情。 – Florian