[ 
https://issues.apache.org/jira/browse/LOGCXX-510?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17182702#comment-17182702
 ] 

Thorsten Schöning commented on LOGCXX-510:
------------------------------------------

I had another look at building APR etc. using CMAKE and am running into trouble 
when building APR-Util. It seems that VS wants to build a DLL, tries to link 
APR and fails. The following is what VS does:

{quote}
cmd.exe /C "cd . && "C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe"
 -E vs_link_dll --intdir=CMakeFiles\libaprutil-1.dir 
--rc=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x64\rc.exe 
--mt=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x64\mt.exe --manifests  -- 
C:\PROGRA~2\MICROS~4\2019\COMMUN~1\VC\Tools\MSVC\1427~1.291\bin\Hostx64\x64\link.exe
 /nologo CMakeFiles\libaprutil-1.dir\buckets\apr_brigade.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_alloc.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_eos.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_file.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_flush.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_heap.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_mmap.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_pipe.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_pool.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_refcount.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_simple.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_socket.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\apr_crypto.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\apr_md4.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\apr_md5.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\apr_passwd.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\apr_sha1.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\apr_siphash.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\crypt_blowfish.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\getuuid.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\uuid.c.obj 
CMakeFiles\libaprutil-1.dir\dbd\apr_dbd.c.obj 
CMakeFiles\libaprutil-1.dir\dbm\apr_dbm.c.obj 
CMakeFiles\libaprutil-1.dir\dbm\apr_dbm_sdbm.c.obj 
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm.c.obj 
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_hash.c.obj 
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_lock.c.obj 
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_pair.c.obj 
CMakeFiles\libaprutil-1.dir\encoding\apr_base64.c.obj 
CMakeFiles\libaprutil-1.dir\hooks\apr_hooks.c.obj 
CMakeFiles\libaprutil-1.dir\memcache\apr_memcache.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apr_date.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apr_queue.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apr_reslist.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apr_rmm.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apr_thread_pool.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apu_dso.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apu_version.c.obj 
CMakeFiles\libaprutil-1.dir\redis\apr_redis.c.obj 
CMakeFiles\libaprutil-1.dir\strmatch\apr_strmatch.c.obj 
CMakeFiles\libaprutil-1.dir\uri\apr_uri.c.obj 
CMakeFiles\libaprutil-1.dir\xlate\xlate.c.obj 
CMakeFiles\libaprutil-1.dir\xml\apr_xml.c.obj 
CMakeFiles\libaprutil-1.dir\ldap\apr_ldap_stub.c.obj 
CMakeFiles\libaprutil-1.dir\ldap\apr_ldap_url.c.obj 
CMakeFiles\libaprutil-1.dir\libaprutil.rc.res  /out:libaprutil-1.dll 
/implib:libaprutil-1.lib /pdb:libaprutil-1.pdb /dll /version:0.0 /machine:x64 
/debug /INCREMENTAL  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib  && cd ."
{quote}

That line contains "/out:libaprutil-1.dll", so it seems to try to create a DLL. 
When doing the same for APR, things succeed and the expected files are created:

{quote}
  -- Up-to-date: 
C:/Users/tschoening/Documents/Svn/Src/Libs/trunk/C/X-OS/APR/apr/1.7.0/src/out/install/x64-Debug/lib/libapr-1.lib
  -- Up-to-date: 
C:/Users/tschoening/Documents/Svn/Src/Libs/trunk/C/X-OS/APR/apr/1.7.0/src/out/install/x64-Debug/bin/libapr-1.dll
{quote}

Anyway, linking APR-Util fails with errors like the following, where 
"apr_vformatter" should be contained in APR:

{quote}
C:\Users\tschoening\Documents\Svn\Src\Libs\trunk\C\X-OS\APR\apr-util\1.6.1\src\apr_brigade.c.obj
 : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol 
"apr_vformatter" in Funktion "apr_brigade_vprintf".
{quote}

The following is the command line created for the linker and what I'm wondering 
is why it doesn't contain any reference to APR or EXPAT. I'm somewhat sure, 
though, to have configured the correct output directories of both for APR-Util, 
because otherwise APR-Util simply couldn't build. Using ProcMon, I can even see 
successful attempts to access the directory I configured for APR_INCLUDE_DIR, 
while I don't see any attempts to use a pretty similar configured APR_LIBRARIES.

{quote}
LINK Pass 1: command 
"C:\PROGRA~2\MICROS~4\2019\COMMUN~1\VC\Tools\MSVC\1427~1.291\bin\Hostx64\x64\link.exe
 /nologo CMakeFiles\libaprutil-1.dir\buckets\apr_brigade.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_alloc.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_eos.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_file.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_flush.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_heap.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_mmap.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_pipe.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_pool.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_refcount.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_simple.c.obj 
CMakeFiles\libaprutil-1.dir\buckets\apr_buckets_socket.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\apr_crypto.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\apr_md4.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\apr_md5.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\apr_passwd.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\apr_sha1.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\apr_siphash.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\crypt_blowfish.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\getuuid.c.obj 
CMakeFiles\libaprutil-1.dir\crypto\uuid.c.obj 
CMakeFiles\libaprutil-1.dir\dbd\apr_dbd.c.obj 
CMakeFiles\libaprutil-1.dir\dbm\apr_dbm.c.obj 
CMakeFiles\libaprutil-1.dir\dbm\apr_dbm_sdbm.c.obj 
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm.c.obj 
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_hash.c.obj 
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_lock.c.obj 
CMakeFiles\libaprutil-1.dir\dbm\sdbm\sdbm_pair.c.obj 
CMakeFiles\libaprutil-1.dir\encoding\apr_base64.c.obj 
CMakeFiles\libaprutil-1.dir\hooks\apr_hooks.c.obj 
CMakeFiles\libaprutil-1.dir\memcache\apr_memcache.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apr_date.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apr_queue.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apr_reslist.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apr_rmm.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apr_thread_pool.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apu_dso.c.obj 
CMakeFiles\libaprutil-1.dir\misc\apu_version.c.obj 
CMakeFiles\libaprutil-1.dir\redis\apr_redis.c.obj 
CMakeFiles\libaprutil-1.dir\strmatch\apr_strmatch.c.obj 
CMakeFiles\libaprutil-1.dir\uri\apr_uri.c.obj 
CMakeFiles\libaprutil-1.dir\xlate\xlate.c.obj 
CMakeFiles\libaprutil-1.dir\xml\apr_xml.c.obj 
CMakeFiles\libaprutil-1.dir\ldap\apr_ldap_stub.c.obj 
CMakeFiles\libaprutil-1.dir\ldap\apr_ldap_url.c.obj 
CMakeFiles\libaprutil-1.dir\libaprutil.rc.res /out:libaprutil-1.dll 
/implib:libaprutil-1.lib /pdb:libaprutil-1.pdb /dll /version:0.0 /machine:x64 
/debug /INCREMENTAL kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST 
/MANIFESTFILE:CMakeFiles\libaprutil-1.dir/intermediate.manifest 
CMakeFiles\libaprutil-1.dir/manifest.res" failed (exit code 1120) with the 
following output:
     Bibliothek "libaprutil-1.lib" und Objekt "libaprutil-1.exp" werden 
erstellt.
{quote}

Need to debug this further...

> Build problems using CMAKE and Visual Studio 2019 Community
> -----------------------------------------------------------
>
>                 Key: LOGCXX-510
>                 URL: https://issues.apache.org/jira/browse/LOGCXX-510
>             Project: Log4cxx
>          Issue Type: Bug
>          Components: Build
>    Affects Versions: 0.11.0
>            Reporter: Thorsten Schöning
>            Assignee: Thorsten Schöning
>            Priority: Major
>         Attachments: CMP00079.png, missing_log4cxx_rc.png, 
> set_target_properties.png
>
>
> I just tested building log4cxx using CMAKE and Visual Studio 2019 Community. 
> Things failed and I want to use this bug to document everything that I've 
> found, because for some things I'm not sure how to handle them properly. Will 
> create a new branch to maintain the fixes I came along, so that those can at 
> best be later reviewed by others. The branch of interest is currently named 
> "logcxx_510_cmake_vs2019_compat".



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to