Hi,

I am trying to use CMake on a open source project called cryptominisat
( https://github.com/msoos/cryptominisat )
which is initially developed under Linux, but is meanwhile partly ported to 
Windows.
Source can already compiled (with a batch file) and run, but not yet completely 
with cmake.

It is also executed via AppVeyor, steps and log output see here:

https://ci.appveyor.com/project/msoos/cryptominisat

Mainly it is doing the following steps, also tried it on my local machine with 
downloaded and locally installed
cmake 3.5.1 and Visual Studio 2015 in a x64 native tools command prompt:
(replaced the %P% with c:\abc and I don't used logger DLL)

cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=c:\abc
msbuild "INSTALL.vcxproj"

(I work in C:\projects\cryptominisat like AppVeyor)

cmake seems to run, generating the *.vcxproj.
During run these libs are generated: temp_lib_norm.lib and temp_lib_ipasir.lib
Then there is a exe, but it always tell me it can't find

..\lib\Release\cryptominisat4.lib

(using a different name then previous generated libs)

It is doing

Lib:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\Lib.exe 
/OUT:"temp_lib_norm.dir\Release\temp_lib_norm.lib" /NOLOGO /MACHINE:X64 
/machine:x64 temp_lib_norm.dir\Release\cnf.obj

-> This lib going to "temp_lib_norm.dir"

Link:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe 
/ERRORREPORT:QUEUE 
/OUT:"C:\projects\cryptominisat\cmsat4-src\Release\cryptominisat4.dll" 
/INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib 
shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST 
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed 
/PDB:"C:/projects/cryptominisat/cmsat4-src/Release/cryptominisat4.pdb" 
/SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT 
/IMPLIB:"C:/projects/cryptominisat/lib/Release/cryptominisat4.lib" /MACHINE:X64 
/machine:x64 /DLL 
"C:\projects\cryptominisat\cmsat4-src\temp_lib_norm.dir\Release\cnf.obj"

-> This DLL going to 
"C:\projects\cryptominisat\cmsat4-src\Release\cryptominisat4.dll"

Link:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe 
/ERRORREPORT:QUEUE 
/OUT:"C:\projects\cryptominisat\cmsat4-src\Release\cryptominisat4ipasir.dll" 
/INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib 
shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib 
..\lib\Release\cryptominisat4.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' 
uiAccess='false'" /manifest:embed 
/PDB:"C:/projects/cryptominisat/cmsat4-src/Release/cryptominisat4ipasir.pdb" 
/SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT 
/IMPLIB:"C:/projects/cryptominisat/lib/Release/cryptominisat4ipasir.lib" 
/MACHINE:X64 /machine:x64 /DLL 
"C:\projects\cryptominisat\cmsat4-src\temp_lib_ipasir.dir\Release\ipasir.obj"
LINK : fatal error LNK1181: cannot open input file 
'..\lib\Release\cryptominisat4.lib' 
[C:\projects\cryptominisat\cmsat4-src\libcryptominisat4ipasir.vcxproj]

-> This time "..\lib\Release\cryptominisat4.lib"

There seems to be a mixture of lib pathes and names, but interesting thing is, 
it seems to be working under Linux.

I see that temp_lib_norm.lib is built in "cmsat4-src\temp_lib_norm.dir",
but there seems to be no cryptominisat4.lib at all in these directories.

      I think this is the code for copying one lib to another:
      ( complete file see 
https://github.com/msoos/cryptominisat/blob/master/src/CMakeLists.txt line 151 )

      add_library(libcryptominisat4 SHARED ${cms_lib_objects_norm}) 



      target_link_libraries(libcryptominisat4 


      LINK_PUBLIC ${cryptoms_lib_link_libs} 


      ) 


whereas

list(APPEND cms_lib_objects_norm $<TARGET_OBJECTS:temp_lib_norm>)

and 

      add_library(temp_lib_norm OBJECT 


      ${cryptoms_lib_files} 


      cryptominisat.cpp 

      ) 


and 

      set(cryptoms_lib_files 


      cnf.cpp 


      propengine.cpp 

      varreplacer.cpp 

...
)

I am fairly new to cmake, just bought "mastering cmake" a few days ago and 
reading and trying a lot, 
but still don't know how to debug this and where to start at all. 

Can someone give me a hint? Where is the correct place to store this *.lib 
and/or *.dll?
Are there some which fail under Windows (with Visual Studio 2015) but work on 
Linux?

Many thanks for helping!

Best regards,

Martin




-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to