我在Windows 10 64位上第1703页。最近我想从头开始构建Tesseract-OCR库用于学习目的。在此过程中,我必须构建其他几个库,将它们放入一个文件夹中并命名为#34; myLibrary" (C:/ myLibrary)并将其设置在Windows路径变量中。即使其他图书馆建立成功,我仍然难以找到图书馆,即使在C:/ myLibrary'在路上。是否每次添加新库时都必须修改特定项目的CMakeLists.txt文件以查看库?或者可以假设CMake具有查找库的功能,只要它们在路径中?仅仅设置' C:/ myLibrary'在路径中或我应该添加' bin'和' lib' CMake可以找到每个编译库的文件夹吗?
答案 0 :(得分:0)
Windows PATH无法帮助您检测CMake中的库。如果它甚至可以工作,那么它不是设计的,可能非常容易出错。在CMake中,手动通过target_link_libraries(${TARGET} PRIVATE
"${LIB_PATH}/foo.lib"
"${LIB_PATH}/baz.lib"
"${ANOTHER_LIB_PATH}/buzz.lib"
...
}
添加库的最佳方式。 e.g。
GLOB
对于路径中的库,您也可以GLOB
,但不鼓励这样做,因为您需要手动重新运行CMake以获取任何新库。 file(GLOB LIBS "${LIB_PATH}/lib*.dll")
target_link_libraries(${TARGET} PRIVATE ${LIBS})
无法自行检测新图书馆,但假设您不介意:
set
要记住的另一个重要事项是,您不应该依赖系统指定的CMake路径,您需要在target_link_libraries
之前使用set(LIB_PATH "C:/myLibrary")
指定位置,例如
function testWrite():void {
var fileRef:FileReference;
var txt:String;
var fr:int;
txt = "";
// 'Head' is the name one of MovieClips
for (fr = 0; fr < 4; fr++) {
txt += "frame: " + currentFrame + ", " + Head.x + "\n";
nextFrame();
Head.nextFrame();
}
fileRef = new FileReference();
fileRef.save(txt, "testExport.txt");
}
testWrite();