Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake:查找文件是否不在文件存在的位置?_Cmake_Cross Compiling - Fatal编程技术网

CMake:查找文件是否不在文件存在的位置?

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

现在我的生活中正在发生一个令人困惑的问题。 由于某些原因,当我尝试交叉编译时,find_库和find_文件调用无法在特定路径上找到特定文件。Find_文件被添加为一个健全性检查,这只会让我失去更多的健全性

这里有一个解释过的例子,因为我无权发布真正的CMakeLists:

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逻辑中的神秘问题。