CMake:查找文件是否不在文件存在的位置?
现在我的生活中正在发生一个令人困惑的问题。 由于某些原因,当我尝试交叉编译时,find_库和find_文件调用无法在特定路径上找到特定文件。Find_文件被添加为一个健全性检查,这只会让我失去更多的健全性 这里有一个解释过的例子,因为我无权发布真正的CMakeLists:CMake:查找文件是否不在文件存在的位置?,cmake,cross-compiling,Cmake,Cross Compiling,现在我的生活中正在发生一个令人困惑的问题。 由于某些原因,当我尝试交叉编译时,find_库和find_文件调用无法在特定路径上找到特定文件。Find_文件被添加为一个健全性检查,这只会让我失去更多的健全性 这里有一个解释过的例子,因为我无权发布真正的CMakeLists: set(mylib_lib_dir_release /home/myuser/mylib/lib/Release) FIND_LIBRARY(mylib_opt mylib PATHS ${mylib_lib_dir_rel
set(mylib_lib_dir_release /home/myuser/mylib/lib/Release)
FIND_LIBRARY(mylib_opt mylib PATHS ${mylib_lib_dir_release} NO_DEFAULT_PATH)
FIND_FILE(mylib_filepath libmylib.a PATHS ${mylib_lib_dir_release} NO_DEFAULT_PATH)
if (EXISTS "/home/myuser/mylib/lib/Release/libmylib.a")
message("IT'S REALLY THERE!")
endif()
正常编译时,这三个结果都是肯定的(find_library、find_file和EXISTS都找到了文件)。但是,在使用ARM工具链进行交叉编译时,无论是“查找库”还是“查找文件”,都无法找到该文件,但它确实存在代码>已打印
有什么想法吗?症状与中的症状非常相似。看起来您使用的工具链强制在sysroot中预先设置搜索路径。在您解释的示例中,您的路径不一致:您在
/home/myuser/mylib/lib/Release
中搜索,同时选中/home/myuser/mylib/lib/**LinuxArm**/Release
@非常有帮助,谢谢您指出这一点。正在切碎实际的文件,但遗漏了一些。@Tsyvarev谢谢你,先生!那是票。路径为“查找根路径”。路径设置不正确。我最近发现了cmake选项--调试输出
,--跟踪
,以及--跟踪扩展
,发现它们有助于理解cmake逻辑中的神秘问题。症状与中的症状非常相似。看起来您使用的工具链强制在sysroot中预先设置搜索路径。在您解释的示例中,您的路径不一致:您在/home/myuser/mylib/lib/Release
中搜索,同时选中/home/myuser/mylib/lib/**LinuxArm**/Release
@非常有帮助,谢谢您指出这一点。正在切碎实际的文件,但遗漏了一些。@Tsyvarev谢谢你,先生!那是票。路径为“查找根路径”。路径设置不正确。我最近发现cmake选项--调试输出
,--跟踪
,以及--跟踪扩展
,发现它们有助于理解cmake逻辑中的神秘问题。