cmake在路径中引入/__/。原因是什么?
这里是使用cmake的编译METIS的示例:
[ 3%] Building C object libmetis/CMakeFiles/metis.dir/__/GKlib/b64.c.o
cd /workstuff/dune/zusatz/metis-5.0.2/build/Linux-x86_64/libmetis && /usr/bin/gcc
-DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall
-pedantic -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2
-DHAVE_EXECINFO_H -DHAVE_GETLINE -O3 -I/workstuff/dune/zusatz/metis-5.0.2/GKlib
-I/workstuff/dune/zusatz/metis-5.0.2/include -I/workstuff/dune/zusatz/metis-5.0.2/libmetis/.
-o CMakeFiles/metis.dir/__/GKlib/b64.c.o -c /workstuff/dune/zusatz/metis-5.0.2/GKlib/b64.c
我们在将文件添加到"当前源dir"的子目录中的库/可执行文件中时会观察到此行为,从而使用"/../"。/p>
这里是我们何时获得此的示例:
FILE(GLOB inFiles
"${CMAKE_CURRENT_SOURCE_DIR}/../BuildEnvCommon/*.c"
"${CMAKE_CURRENT_SOURCE_DIR}/../BuildEnvCommon/*.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/../BuildEnvCommon/*.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/../BuildEnvCommon/*.h"
)
(snip)
add_executable("ProjectName" ${inFiles})
在您的示例中,我可以想象Gklib不在libmetis源树中单独)编译了Gklib。我希望我的意思很清楚。